1. 程式人生 > >良/惡性乳腺癌腫瘤預測---線性分析

良/惡性乳腺癌腫瘤預測---線性分析

1 線性分類器

     介紹:假設特徵與分類結果存線上性關係的模型;通過累加計算每個維度的特徵與各自權重的乘積幫助類別決策。

2 實驗程式碼及截圖

#coding:utf-8
import pandas as pd
import numpy as np
#建立特徵列表
column_names=['samples code number','Clump Thickness','Uniformity of Cell Size','Uniformity of Cell Shape','Marginal Adhesion',
'SIngle Epithelial Cell Size','Bare Nuclei','Bland Chromatin','Normal Nucleoli','Mitoses','Class']
#使用pandas.read_csv函式讀取指定資料
data=pd.read_csv('/home/guo/桌面/Work/shuju/Breast-Cancer/breast-cancer-wisconsin.data',names=column_names)
#將?替換為標準缺失值表示
data=data.replace(to_replace='?',value=np.nan)
#丟棄帶有缺失值的資料(只有有一個維度有缺失)
data=data.dropna(how='any')
#輸出data的資料量和維度
print("資料量 維度")
print(data.shape)


#使用sklearn.cross_valiation中train_test_split模組用於分割資料
from sklearn.cross_validation import train_test_split
#隨機25%用於測試,其他用於訓練
X_train,X_test,y_train,y_test=train_test_split(data[column_names[1:10]],data[column_names[10]],test_size=0.25,random_state=33)
#查驗訓練樣本的數量和類別
print('訓練樣本的數量和類別')
print(y_train.value_counts())


#檢視測試樣本的數量和類別
print('測試樣本的數量和類別')
print(y_test.value_counts())

#使用線性分類模型預測
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.linear_model import SGDClassifier
#標準化資料,保證每個維度的特徵資料方差為1,均值為0
ss=StandardScaler()
X_train=ss.fit_transform(X_train)
X_test=ss.transform(X_test)
#初始化
lr=LogisticRegression()
sgdc=SGDClassifier()
#呼叫fit訓練模型引數
lr.fit(X_train, y_train)
#進行預測
lr_y_predict=lr.predict(X_test)

#呼叫sgdclassifier中的fit訓練模型
sgdc.fit(X_train,y_train)
#對X—test進行預測
sgdc_y_predict=sgdc.predict(X_test)

#使用線性分類模型記性預測任務的效能分析
from sklearn.metrics import classification_report
#獲得測試集上的準確性結果
print('線性分類模型')
print('Accuracy of LR Classifier:',lr.score(X_test,y_test))
#獲得其他三個自指標的結果
print classification_report(y_test,lr_y_predict,target_names=['Benign','Malignant'])


#使用隨機梯度下降模型獲得在測試集上的準確性結果
print('隨機梯度下降模型')
print('Accuracy of SGD Classifier:',sgdc.score(X_test,y_test))
print classification_report(y_test,sgdc_y_predict,target_names=['Benign','Malignant'])    
    
 3 本文在最後使用了兩種模型進行了效能的比較,以實驗結果來看,LR相較於SDG在測試集表現有更高的準確性;