python良\恶性肿瘤预测-LogisticRegression以及SGDClassifier

# -*- coding: utf-8 -*-
"""
Created on Fri Oct 12 16:56:56 2018

@author: fengjuan
"""

import pandas as pd
import numpy as np
#导入matplotlib工具包的pyplot并简称为plt
#import matplotlib.pyplot as plt
#df_train.info()
#创建特征列表,网址里数据没有表头
column_names=['Sample code number','Clump Thickness','Uniformity of Cell Size',
             'Uniformity of Cell Shape','Marginal Adhesion','Single Epithelial Cell Size',
             'Bare Nulclei','Bland Chromatin','Nomal Nucleoli','Mitoses','Class']
#从网上读取
data=pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/breast-cancer-wisconsin.data',
                 names=column_names)
#将数据里的?替换为标准缺失值
data=data.replace(to_replace='?',value=np.nan)
#丢弃有缺失的数据,只要有缺失就丢弃
data=data.dropna(how='any')
data.info()
#因为元数据没有测试集,所以将数据集分成测试集和训练集,随机采样25%作为测试集
from sklearn.cross_validation import train_test_split
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(y_train.value_counts())
print(y_test.value_counts())

‘’‘

输出的结果是:

2    344
4    168
Name: Class, dtype: int64
2    100
4     71
Name: Class, dtype: int64

‘’‘


from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.linear_model import SGDClassifier
ss = StandardScaler()
X_train = ss.fit_transform(X_train)
X_test = ss.transform(X_test)
lr=LogisticRegression()
sgdc=SGDClassifier()
#调用LogisticRegression中fit函数/模块来训练模型参数
lr.fit(X_train,y_train)
#用训练好的模型lr预测,结果存储在变量lr_y_predict
lr_y_predict=lr.predict(X_test)
#调用SGDClassifier中fit函数/模块来训练模型参数
sgdc.fit(X_train,y_train)
#用训练好的模型sgdc预测,结果存储在变量sgdc_y_predict
sgdc_y_predict=sgdc.predict(X_test)
#性能预测
from sklearn.metrics import classification_report
print('Accuracy of LR Classifier:',lr.score(X_test,y_test))
print(classification_report(y_test,lr_y_predict,target_names=['Benign',
                                                              'Malignant']))
print('Accuracy of SGD Classifier:',sgdc.score(X_test,y_test))
print(classification_report(y_test,sgdc_y_predict,target_names=['Benign',
                                                              'Malignant']))


'''结果:
Accuracy of LR Classifier: 0.9883040935672515
             precision    recall  f1-score   support

     Benign       0.99      0.99      0.99       100
  Malignant       0.99      0.99      0.99        71

avg / total       0.99      0.99      0.99       171


Accuracy of SGD Classifier: 0.9766081871345029
             precision    recall  f1-score   support

     Benign       0.99      0.97      0.98       100
  Malignant       0.96      0.99      0.97        71

avg / total       0.98      0.98      0.98       171
'''

猜你喜欢

转载自blog.csdn.net/qq_40516413/article/details/83035995