肿瘤类别预测

导入数据

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)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2021-09-18 12:29  李点  阅读(96)  评论(0)    收藏  举报