python中线性回归的标签可以是分类的吗_机器学习之路:python线性回归分类器 进行良恶性肿瘤分类预测...

1 importnumpy as np2 importpandas as pd3 from sklearn.cross_validation importtrain_test_split4 from sklearn.preprocessing importStandardScaler5 from sklearn.linear_model importLogisticRegression, SGDClassifier6 from sklearn.metrics importclassification_report7

8 ‘‘‘

9 线性分类器10 最基本和常用的机器学习模型11 受限于数据特征与分类目标的线性假设12 逻辑斯蒂回归 计算时间长,模型性能略高13 随机参数估计 计算时间短,模型性能略低14 ‘‘‘

15

16 ‘‘‘

17 1 数据预处理18 ‘‘‘

19 #创建特征列表

20 column_names = [‘Sample code number‘, ‘Clump Thickness‘, ‘Uniformity of Cell Size‘,21 ‘Uniformity of Cell Shape‘, ‘Marginal Adhesion‘, ‘Single Epithelial Cell size‘,22 ‘Bare Nuclei‘, ‘Bland Chromatin‘, ‘Normal Nucleoli‘, ‘Mitoses‘, ‘Class‘]23 #使用pandas.read_csv取数据集

24 data = pd.read_csv(‘./data/breast/breast-cancer-wisconsin.data‘, names=column_names)25 #将?替换为标准缺失值表示

26 data = data.replace(to_replace=‘?‘, value=np.nan)27 #丢失带有缺失值的数据 只要有一个维度有缺失就丢弃

28 data = data.dropna(how=‘any‘)29 #输出data数据的数量和维度

30 #print(data.shape)

31

32

33 ‘‘‘

34 2 准备 良恶性肿瘤训练、测试数据部分35 ‘‘‘

36 #随机采样25%数据用于测试 75%数据用于训练

37 x_train, x_test, y_train, y_test = train_test_split(data[column_names[1:10]],38 data[column_names[10]],39 test_size=0.25,40 random_state=33)41 #查验训练样本和测试样本的数量和类别分布

42 #print(y_train.value_counts())

43 #print(y_test.value_counts())

44 ‘‘‘

45 训练样本共512条 其中344条良性肿瘤 168条恶性肿瘤46 2 34447 4 16848 Name: Class, dtype: int6449 测试数据共171条 其中100条良性肿瘤 71条恶性肿瘤50 2 10051 4 7152 Name: Class, dtype: int6453 ‘‘‘

54

55

56 ‘‘‘

57 3 机器学习模型进行预测部分58 ‘‘‘

59 #数据标准化,保证每个维度特征的方差为1 均值为0 预测结果不会被某些维度过大的特征值主导

60 ss =StandardScaler()61 x_train = ss.fit_transform(x_train) #对x_train进行标准化

62 x_test = ss.transform(x_test) #用与x_train相同的规则对x_test进行标准化,不重新建立规则

63

64 #分别使用 逻辑斯蒂回归 和 随机参数估计 两种方法进行学习预测

65

66 lr = LogisticRegression() #初始化逻辑斯蒂回归模型

67 sgdc = SGDClassifier() #初始化随机参数估计模型

68

69 #使用 逻辑斯蒂回归 在训练集合上训练

70 lr.fit(x_train, y_train)71 #训练好后 对测试集合进行预测 预测结果保存在 lr_y_predict中

72 lr_y_predict =lr.predict(x_test)73

74 #使用 随机参数估计 在训练集合上训练

75 sgdc.fit(x_train, y_train)76 #训练好后 对测试集合进行预测 结果保存在 sgdc_y_predict中

77 sgdc_y_predict =sgdc.predict(x_test)78

79 ‘‘‘

80 4 性能分析部分81 ‘‘‘

82 #逻辑斯蒂回归模型自带评分函数score获得模型在测试集合上的准确率

83 print("逻辑斯蒂回归准确率:", lr.score(x_test, y_test))84 #逻辑斯蒂回归的其他指标

85 print("逻辑斯蒂回归的其他指标:\n", classification_report(y_test, lr_y_predict, target_names=["Benign", "Malignant"]))86

87 #随机参数估计的性能分析

88 print("随机参数估计准确率:", sgdc.score(x_test, y_test))89 #随机参数估计的其他指标

90 print("随机参数估计的其他指标:\n", classification_report(y_test, sgdc_y_predict, target_names=["Benign", "Malignant"]))91

92 ‘‘‘

93 recall 召回率94 precision 精确率95 fl-score96 support97

98 逻辑斯蒂回归准确率: 0.970760233918128699 逻辑斯蒂回归的其他指标:100 precision recall f1-score support101

102 Benign 0.96 0.99 0.98 100103 Malignant 0.99 0.94 0.96 71104

105 avg / total 0.97 0.97 0.97 171106

107 随机参数估计准确率: 0.9649122807017544108 随机参数估计的其他指标:109 precision recall f1-score support110

111 Benign 0.97 0.97 0.97 100112 Malignant 0.96 0.96 0.96 71113

114 avg / total 0.96 0.96 0.96 171115 ‘‘‘

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值