1、肿瘤预测案例
#######################################################################################
# 导入框架
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.preprocessing import StandardScaler
# 读入数据,数据网址后缀是.data,第二个参数要给列lable命名
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']
data = pd.read_csv("https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/breast-cancer-wisconsin.data",names=column_names)
# 数据显示
# data.head(10)
# 替换和删除无效数据
data = data.replace("?",value = np.nan)
data = data.dropna()
# 拆分测试数据给x
x = data.iloc[:,1:-1]
# 拆分目标数据给y
y = data["Class"]
# 分割数据为训练集和测试集
x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.2)
# 特征工程(标准化)
transfer = StandardScaler()
x_train = transfer.fit_transform(x_train)
x_test = transfer.fit_transform(x_test)
# 机器学习
estimator = LogisticRegression()
estimator.fit(x_train,y_train)
# 模型评估(准确率评估)
ret = estimator.score(x_test,y_test)
print("模型准确率为:\n",ret)
y_pre = estimator.predict(x_test)
print("预测值为:\n",y_pre)
#######################################################################################
1、导入数据后是乱的,需要定义column_names列名,然后用names参数添加列名(表头)到数据中,names的作用是添加/替换现有的数据表头。
2、data.head()是显示数据做预览的意思,想看几行()里面就写几。
3、data = data.replace("?",value = np.nan)
data = data.dropna()
数据里面包含无效数据“?”,所以在数据处理阶段需要对这些数据进行替换和删除,此两行命令就是这个干这事儿的,将所有?替换成NaN,这里没理解太透彻,就是理解为将一些乱七八糟的无效数据统一替换成NaN,这个叫什么表示缺失值的常量,Numpy库就是这么定义的,想删除数据必须要替换成Nunmy认识的好处理的NaN???
4、x = data.iloc[:,1:-1],是对数据进行切片截取然后在赋予给x的过程,本案例为取全部行,第一列到倒数第二列的所有数据
5、记得之前几个案例中,好像是鸢尾花案例有明确的说明Y值训练的时候不给fit,这怎么又给了呢??
#######################################################################################