SVC Posted on 2017-01-22 | In study notes | Visitors: 手写体数字图像识别数据描述Scikit-learn内部集成的手写体数字图片数据集提取数据: 123456# 从 sklearn.datasets 里导入手写体熟悉加载器from sklearn.datasets import load_digits# 从通过数据加载器获得手写数字的数码图像数据并储存在 digits 变量中digits = load_digits()# 检视数据规模和特征维度digits.data.shape # 输出:(1797L,64L) 该手写体数字的数码图像共有1797条 每幅图片都是由 8*8=64 的像素矩阵表示 准备训练、测试数据123456789# 从sklearn.cross_validation 中导入 train_test_split 用于数据分割from sklearn.cross_validation import train_test_split# 随机选取 75% 的数据作为训练样本,其余 25% 的数据作为测试样本X_train, X_test, y_train, y_test = train_test_split(digits.data, digits.target, test_size=0.25, random_state=33)# 分别检视训练与测试数据规模y_train.shape # 输出:(1347L,)y_test.shape # 输出:(450L,) 使用SVC进行识别任务12345678910111213141516# 从 sklearn.preprocessing 里导入数据标准化模块from sklearn.preprocessing import StandardScaler# 从 sklearn.svm 里导入基于线性假设的支持向量机分类器 Linearsvcfrom sklearn.svm import LinearSVC# 对训练和测试的特征数据进行标准化ss = StandardScaler()X_train = ss.fit_transform(X_train)X_test = ss.transform(X_test)# 初始化线性假设的支持向量机分类器 LinearSVClsvc = LinearSVC()# 进行模型训练lsvc.fit(X_train, y_train)# 利用训练好的模型对测试样本的数字类别进行预测,预测结果储存在变量 y_predict 中y_predict = lsvc.predict(X_test) 性能分析123456# 使用模型自带的评估函数进行准确性测评print 'The Accuracy of Linear SVC is', lsvc.score(X_test, y_test)# 依然使用 sklearn.metrics 里面的 classification_report 模块对预测结果做更加详细的分析from sklearn.metrics import classification_reportprint classification_report(y_test, y_predict, target_names=digits.target_names.astype(str))