암이 생길지 안 생길지 예측을 해봤어요.

9308 단어 Python

개시하다


 sklearn.데이터sets에 수록된 유방암 검사 데이터를 사용하여 암의 발생 여부를 예측한다.

데이터 읽기


라이브러리와 유방암 데이터를 읽다.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
% matplotlib inline
import seaborn as sns

from sklearn.datasets import load_breast_cancer
bc = load_breast_cancer()
df_data = pd.DataFrame(bc.data, columns=bc.feature_names)
df_target = pd.DataFrame(bc.target, columns=['class'])
df = pd.concat([df_data, df_target], axis=1)

데이터 분석 및 특징량 공정


우선 관련을 두다.
df_corr = df.corr()
sns.heatmap(df_corr)

다양한 분석을 하고 싶지만 의학적 지식이 전혀 없어 관련 절대치가 높은 것만 특징량으로 사용한다.
X = df.loc[:, df_corr["class"].abs().sort_values(ascending=False).index[1:10]].values
y = df.loc[:, ['class']].values
데이터를 표준화하다.
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
scaler.fit(X)
X_std = scaler.transform(X)
학습용과 평가용의 데이터로 나누다.
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X_std, y, test_size=0.3, random_state=0)

학습과 평가


격자선을 검색합니다.지원 벡터기를 사용하는 것은 단지 개인의 취향일 뿐이다.
from sklearn.svm import SVC
from sklearn.model_selection import GridSearchCV

param_grid = {'C': [0.001, 0.01, 0.1, 1, 10, 100],  'gamma' : [0.001, 0.01, 0.1, 1, 10, 100]}

grid_search_svm = GridSearchCV(SVC(), param_grid)

grid_search_svm.fit(X_train, y_train)
학습용 데이터와 평가용 데이터로 모델의 정확한 대답률을 확인한다.
print('train acc: %.3f' % grid_search_svm.score(X_train, y_train))
print('test acc: %.3f' % grid_search_svm.score(X_test, y_test))
print(grid_search_svm.best_params_)
결실
train acc: 0.970
test acc: 0.942
{'C': 100, 'gamma': 0.01}
이렇게나는 점수가 그런대로 괜찮다고 생각하지만, 좀 과한 것 같아서 파라미터를 약간 조정했다.
svm = SVC(C=300,gamma=0.01)
svm.fit(X_train,y_train)
print('train acc: %.3f' % svm.score(X_train, y_train))
print('test acc: %.3f' % svm.score(X_test, y_test))
위 매개변수에서
train acc: 0.972
test acc: 0.965
네.비싸서 만족해요.

총결산


데이터 분석 부분은 비교적 적합하지만 정확도가 매우 좋아서 그래도 괜찮다.

좋은 웹페이지 즐겨찾기