2. 파이톤이 접미된 다변수 해석 5-1.논리 회귀 분석(scikit-learn)
15073 단어 회귀 논리Python교차 엔트로피 오차오즈비다변량 분석
(1) 라이브러리 가져오기
# データ加工・処理・分析ライブラリ
import numpy as np
import numpy.random as random
import scipy as sp
from pandas import Series, DataFrame
import pandas as pd
# 可視化ライブラリ
import matplotlib.pyplot as plt
import matplotlib as mpl
import seaborn as sns
%matplotlib inline
# 機械学習ライブラリ
import sklearn
# 小数第3位まで表示
%precision 3
(2) 데이터 획득 및 읽기
# データを取得
url = 'https://raw.githubusercontent.com/yumi-ito/datasets/master/datasets_adult.csv'
# 取得したデータをDataFrameオブジェクトとして読み込み
df = pd.read_csv(url, header=None)
# 列ラベルを設定
df.columns = ['age', 'workclass', 'fnlwgt', 'education', 'education-num',
'marital-status', 'occupation', 'relationship', 'race', 'sex',
'capital-gain', 'capital-loss', 'hours-per-week', 'native-country', 'flg-50K']
의역
프로젝트(해설)
데이터 형식
0
age
나이, 연령
연속값
int
1
workclass
직업 계급
셀프-emp-not-inc(개인사업주), 셀프-emp-ic(개인경영법인), State-gov(주정부) 등
varchar(가변 길이 문자열)
2
fnlwgt
최종 무게
연속값(응답한 단원으로 표시된 목표의 전체 단원수)
int
3
education
학력.
Bacheelors(학사), HS-grad(고졸), Proof-school(전문직계대학원) 등
varchar
4
education-num
취학 연한
연속값
int
5
marital-status
결혼 경력
Married-civ-spouse(결혼한 배우자), 디보어ced(이혼), 네버-married(미혼) 등
varchar
6
occupation
직업.
Sales(영업직), Exec-managerial(경영간부), Adm-Colical(사무직) 등
varchar
7
relationship
동거
Wife(아내), Own-child(친생), Husband(남편) 등
varchar
8
race
인종
화이트(백인), 아시아(Asian-Pac-Islander·아시아계), 블랙(흑인) 등
varchar
9
sex
성별 명사
Female(여성), Male(남성).
varchar
10
capital-gain
고정자산 매각 수익
연속값
int
11
capital-loss
고정자산 매각손실
연속값
int
12
hours-per-week
주간 근무 시간
연속값
int
13
native-country
국적.
United-sates(미국), 재팬(일본), 큐바(쿠바) 등
varchar
target
flg-50K
연간 50K달러 이상 매출
50K, <=50K.
varchar
# データの形式と欠損数を出力
print(df.shape)
print('欠損の数:{}'.format(df.isnull().sum().sum()))
# データの先頭5行を出力
df.head()
(변환 의도 변수)
# 目的変数の各項目の個数を確認
df.groupby('flg-50K').size()
# カラムを追加し、1または0のフラグを設定
df['fin-flg'] = df['flg-50K'].map(lambda x: 1 if x ==' >50K' else 0)
print(df)
# 各項目の個数を再確認
df.groupby('fin-flg').size()
4 모델 구축
# ロジスティック回帰のモデル構築のためのインポート
from sklearn.linear_model import LogisticRegression
# データ分割(訓練データとテストデータ)のためのインポート
from sklearn.model_selection import train_test_split
# 説明変数と目的変数の設定
x = df[['age', 'fnlwgt', 'education-num', 'capital-gain', 'capital-loss']]
y = df['fin-flg']
# 訓練データとテストデータに分割
X_train, X_test, Y_train, Y_test = train_test_split(x, y, test_size=0.5, random_state=0)
random_state=0
의 고정 랜덤수 생성(이 경우 0으로 설정)은 몇 번을 실행하든지 같은 방식으로 분류된다.어떤 줄을 제어할 때 매번 실행할 때 훈련용이나 테스트용으로 분류되어 결과를 고정시키고 모델을 재현하게 한다.test_size
를 0.5로 훈련용과 테스트용으로 나눈다.# LogisticRegressionクラスの初期化
model = LogisticRegression()
# 学習の実行
model.fit(X_train, Y_train)
등모형 평가
# 訓練データの正解率
train_score = format(model.score(X_train, Y_train))
print('正解率(train):', train_score)
# テストデータの正解率
test_score = format(model.score(X_test, Y_test))
print('正解率(test):', test_score)
# 学習済みモデルの各変数の係数を取得
regression_coefficient = model.coef_
# 行ラベル・列ラベルを付与してDataFrameに変換
pd.DataFrame(regression_coefficient.T,
index = [x.columns.values],
columns = ['回帰係数'])
モデル名.coef_
에서 얻어진 것을 설명한다.# 学習済みモデルの各変数のオッズ比を取得
odds_ratio = np.exp(model.coef_)
# 行ラベル・列ラベルを付与してDataFrameに変換
pd.DataFrame(np.exp(model.coef_).T,
index = [x.columns.values],
columns = ['オッズ比'])
Reference
이 문제에 관하여(2. 파이톤이 접미된 다변수 해석 5-1.논리 회귀 분석(scikit-learn)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/y_itoh/items/6a67fc4a1a6930f0a4b5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)