In [ ]:
%matplotlib inline
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
In [ ]:
#创建特征表
'''
1. Sample code number id number
2. Clump Thickness 1 - 10
3. Uniformity of Cell Size 1 - 10
4. Uniformity of Cell Shape 1 - 10
5. Marginal Adhesion 1 - 10
6. Single Epithelial Cell Size 1 - 10
7. Bare Nuclei 1 - 10
8. Bland Chromatin 1 - 10
9. Normal Nucleoli 1 - 10
10. Mitoses 1 - 10
11. Class: (2 for benign, 4 for malignant)
'''
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'
]
#调用pandas工具包读取网络文件csv文件
fileUrl = 'http://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/breast-cancer-wisconsin.data'
data = pd.read_csv(fileUrl, names=column_names)
In [ ]:
#将?替换为标准缺失值
data = data.replace(to_replace='?', value=np.nan)
In [ ]:
data.shape
In [ ]:
#丢弃带有缺失数值的数据(只要有一个未读缺失)
data = data.dropna(how='any')
data.shape
In [ ]:
#准备训练和测试数据, 使用sklearn.cross_validation里的train_test_split模块分割数据
# 通常使用25%当做测试集, %72当做训练集
from sklearn.cross_validation import train_test_split
X_train,Xtest,Y_Train,Y_test=train_test_split(data[column_names[1:10]],
data[column_names[10]],
test_size=0.25,
random_state=33)
In [ ]:
#验证训练样本和测试样本的数量和类别分布
Y_Train.value_counts()
In [ ]:
Y_test.value_counts()
In [ ]:
#使用逻辑斯特回归和随机梯度参数估计对训练数据进行学习,并预测
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.linear_model import SGDClassifier
In [ ]:
#标准化数据,保证每个纬度的特征数据方差为1,均值为0.使得预测结果不会被过大的特征值而主导
ss = StandardScaler()
In [ ]:
X_train = ss.fit_transform(X_train)
In [ ]:
Xtest = ss.transform(Xtest)
In [ ]:
#初始化LogisticRegresssion与SGDClassifier
lr = LogisticRegression()
sgdc = SGDClassifier()
In [ ]:
#调用lr的fit来训练模型参数
lr.fit(X_train, Y_Train)
In [ ]:
#使用训练好的模型lr对X_text进行预测
lr_y_predict = lr.predict(Xtest)
In [ ]:
#调用SGCClassifier中的fit进行训练
sgdc.fit(X_train, Y_Train)
In [ ]:
sgdc_y_predict=sgdc.predict(Xtest)
In [ ]:
#使用线性分类模型从事预测任务的性能分析
from sklearn.metrics import classification_report
#打印测试集上准确性结果
print 'Accuracy of LR Classifier:',lr.score(Xtest, Y_test)
#打印LogisticRegression其他三个指标的结果
print classification_report(Y_test,lr_y_predict, target_names=['Benign', 'Malignant'])
In [ ]:
#打印测试集上准确性结果
print 'Accuracy of LR Classifier:',sgdc.score(Xtest, Y_test)
#打印SGDClassifier其他三个指标的结果
print classification_report(Y_test,sgdc_y_predict, target_names=['Benign', 'Malignant'])
In [ ]:
#支持向量机 根据训练样本的分布搜索所有可能分类器中最佳的那个
from sklearn.datasets import load_iris
digits = load_iris()
In [ ]:
digits.data.shape
In [ ]:
#切分训练集和测试集
from sklearn.cross_validation import train_test_split
In [ ]:
X_train,Xtest,Y_Train,Y_test=train_test_split(digits.data,
digits.target,
test_size=0.25,
random_state=33)
In [ ]:
Y_Train.shape
In [ ]:
Y_test.shape
In [ ]:
#导入标准化模块, 标准化数据
from sklearn.preprocessing import StandardScaler
from sklearn.svm import LinearSVC
In [ ]:
ss = StandardScaler()
In [ ]:
X_train = ss.fit_transform(X_train)
In [ ]:
Xtest = ss.transform(Xtest)
In [ ]:
lsvc = LinearSVC()
In [ ]:
lsvc.fit(X_train, Y_Train)
In [ ]:
ypredic = lsvc.predict(Xtest)
In [ ]:
#准确性评估
print 'The Accuracy of Linear LinearSVC is',lsvc.score(Xtest, Y_test)
In [ ]:
from sklearn.metrics import classification_report
In [ ]:
print classification_report(Y_test, ypredic, target_names=digits.target_names.astype(str))
In [ ]:
a = 1
In [ ]:
print a
In [ ]: