肿瘤类别预测
导入数据
1 ''' 2 导入肿瘤数据,数据集第一个特征我们可以作为索引。 3 由于数据集无特征名,我们需要手动添加 4 ''' 5 import numpy as np 6 import pandas as pd 7 column_names = ['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'] 8 data = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/breast-cancer-wisconsin.data', names = column_names,index_col=0)
拿到数据集,先查看数据集的info,如下图1-1.由图可知,数据集一共9项特征,标签是class,所有数据均无缺失值。所有特征中,有一项object类型的特征,我们需要单独分析。

图1-1数据集的info
特征值处理
分析Bare Nuclei 数据信息
1 train['Bare Nuclei'].values
此特征值如图2-1,结果以数组形式返回。由图可知,值包含?和字符串。我们可以将带有?的数据删除,然后将此特征类型从object转换成int64.

图2-1 训练集'Bare Nuclei'的所有值
删除Bare Nuclei为?的数据项
我们先找出所有 Bare Nuclei为?的数据,然后查出它们的索引。
查找相关数据索引值,如图2-2.
1 train[train['Bare Nuclei'].values=='?'].index

图2-2 Bare Nuclei值为空的所有数据索引
根据索引删除对应数据
1 train.drop(train[train['Bare Nuclei'].values=='?'].index,axis=0,inplace=True)
将此特征类型转换成int64
1 train['Bare Nuclei'].astype(np.int64)
分割数据以及标准化
分割数据
1 # 分割模块 一个训练一个测试 2 from sklearn.model_selection import train_test_split 3 from sklearn.preprocessing import StandardScaler 4 from sklearn.linear_model import LogisticRegression 5 X_train, X_test, y_train, y_test = train_test_split(train.iloc[:,0:-1], train.iloc[:,-1], test_size=0.25, random_state=33)
数据标准化
1 from sklearn.preprocessing import StandardScaler 2 # 把data变成正态分布,减小方差 3 from sklearn.linear_model import LogisticRegression 4 from sklearn.linear_model import SGDClassifier 5 ss = StandardScaler() 6 X_train = ss.fit_transform(X_train) 7 X_test = ss.transform(X_test)
算法训练
1.逻辑斯特回归
1 ''' 2 初始化逻辑斯特算法函数,导入数据集 3 ''' 4 lr = LogisticRegression() 5 lr.fit(X_train, y_train)
2.随机梯度下降分类器
1 ''' 2 初始化逻辑斯特算法函数,导入数据集 3 ''' 4 sgdc = SGDClassifier() 5 sgdc.fit(X_train, y_train)

浙公网安备 33010602011771号