当前位置:   article > 正文

基于逻辑回归的癌症预测案例_y_predict = lr.predice()

y_predict = lr.predice()

加载数据给数据中的每一列起列名称

  1. #把数据的头置为空,因为要自己设置列名称
  2. data = pd.read_csv('./breast-cancer-wisconsin.data',header=None)
  3. # print(data)
  4. #增加列名
  5. columns = ['Sample 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']
  6. data.columns = columns

把数据中的问号改成NAN,然后将其删除

  1. data.replace('?',np.nan,inplace=True)
  2. #缺失值检测
  3. # print(data.isnull().sum())
  4. #删除缺失值
  5. data.dropna(axis=0,how='any',inplace=True)

筛选特征值和目标值

  1. #特征筛选,筛选数据集,去除第一列的编号
  2. data = data.iloc[:,1:]
  3. #获取特征值、目标值
  4. feature = data.iloc[:,:-1].values
  5. target = data.iloc[:,-1].values

异常值处理---没有异常值

拆分数据集和特征值标准化

  1. #拆分数据集
  2. #返回四种结果
  3. x_train,x_test,y_train,y_test = train_test_split(feature,target,test_size=0.3,random_state=1)
  4. #标准化数据,特征值需要标准化,目标值不需要标准化
  5. stand = StandardScaler()
  6. x_train = stand.fit_transform(x_train)
  7. x_test = stand.fit_transform(x_test)

利用逻辑回归对数据进行分类

  1. #利用逻辑回归分类
  2. lr = LogisticRegression() #参考sgd
  3. #训练数据
  4. lr.fit(x_train,y_train)
  5. #进行预测数据
  6. y_predict = lr.predict(x_test)
  7. #准确率
  8. score = lr.score(x_test,y_test)
  9. #获取权重与偏置
  10. weight = lr.coef_
  11. bias = lr.intercept_
  12. # print('权重:\n',weight)
  13. # print('偏置:\n',bias)
  14. # print('准确率:\n',score)
  15. # print('预测值:\n',y_predict)

计算召回率

  1. #计算召回率,召回率越高越好
  2. #fl-score越高越好,模型越稳健
  3. #labels=[2,4],target_names=['良性','恶性'],把显示的行名称由2,4变成良性和恶性
  4. res_report = classification_report(y_test,y_predict,labels=[2,4],target_names=['良性','恶性'])
  5. # print(res_report)

计算auc指标

针对样本不平衡的状态,这里样本均衡,不使用auc,只作为参考示例

  1. #np.where,把2,4转化成0、1
  2. y_test = np.where(y_test > 3,1,0)
  3. # print(y_test)
  4. #计算auc指标 --针对样本不平衡的状态,这里样本均衡,不使用auc,只作为参考
  5. auc = roc_auc_score(y_test,y_predict)
  6. print(auc)
注: 如果样本不均衡就变成均衡

 完整代码如下

  1. import pandas as pd
  2. import numpy as np
  3. from sklearn.model_selection import train_test_split
  4. from sklearn.preprocessing import StandardScaler
  5. from sklearn.linear_model import LogisticRegression
  6. from sklearn.metrics import classification_report #召回率计算
  7. from sklearn.metrics import roc_auc_score#引入auc指标
  8. #加载数据
  9. data = pd.read_csv('./breast-cancer-wisconsin.data',header=None)
  10. # print(data)
  11. #增加列名
  12. columns = ['Sample 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']
  13. data.columns = columns
  14. # print(data)
  15. data.replace('?',np.nan,inplace=True)
  16. #缺失值检测
  17. # print(data.isnull().sum())
  18. #删除缺失值
  19. data.dropna(axis=0,how='any',inplace=True)
  20. # print(data.isnull().sum())
  21. #特征筛选,筛选数据集,去除第一列的编号
  22. data = data.iloc[:,1:]
  23. #获取特征值、目标值
  24. feature = data.iloc[:,:-1].values
  25. target = data.iloc[:,-1].values
  26. #异常值处理---没有异常值
  27. #拆分数据集
  28. #返回四种结果
  29. x_train,x_test,y_train,y_test = train_test_split(feature,target,test_size=0.3,random_state=1)
  30. #标准化数据,特征值需要标准化,目标值不需要标准化
  31. stand = StandardScaler()
  32. x_train = stand.fit_transform(x_train)
  33. x_test = stand.fit_transform(x_test)
  34. #利用逻辑回归分类
  35. lr = LogisticRegression() #参考sgd
  36. #训练数据
  37. lr.fit(x_train,y_train)
  38. #进行预测数据
  39. y_predict = lr.predict(x_test)
  40. #准确率
  41. score = lr.score(x_test,y_test)
  42. #获取权重与偏置
  43. weight = lr.coef_
  44. bias = lr.intercept_
  45. # print('权重:\n',weight)
  46. # print('偏置:\n',bias)
  47. # print('准确率:\n',score)
  48. # print('预测值:\n',y_predict)
  49. #计算召回率,召回率越高越好
  50. #fl-score越高越好,模型越稳健
  51. #labels=[2,4],target_names=['良性','恶性'],把显示的行名称由2,4变成良性和恶性
  52. res_report = classification_report(y_test,y_predict,labels=[2,4],target_names=['良性','恶性'])
  53. # print(res_report)
  54. #np.where,把2,4转化成0、1
  55. y_test = np.where(y_test > 3,1,0)
  56. # print(y_test)
  57. #计算auc指标 --针对样本不平衡的状态,这里样本均衡,不使用auc,只作为参考
  58. auc = roc_auc_score(y_test,y_predict)
  59. print(auc)
  60. #如果样本不均衡就变成均衡

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/199118
推荐阅读
相关标签
  

闽ICP备14008679号