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 [ ]: