主成分分析:
降低特征维度的方法。
不会抛弃某一列特征,
而是利用线性代数的计算,将某一维度特征投影到其他维度上去,
尽量小的损失被投影的维度特征
api使用:
estimator = PCA(n_components=20)
pca_x_train = estimator.fit_transform(x_train)
pca_x_test = estimator.transform(x_test) 分别使用支持向量机进行学习降维前后的数据再预测 该数据集源自网上 https://archive.ics.uci.edu/ml/machine-learning-databases/optdigits/
我把他下载到了本地
训练样本3823条, 测试样本1797条
图像通过8*8像素矩阵表示共64个维度,1个目标维度表示数字类别

python3 学习api使用

主成分分析方法实现降低维度

使用了网络上的数据集,我已经下载到了本地,可以去我的git上参考

git:https://github.com/linyi0604/MachineLearning

代码:

 from sklearn.svm import LinearSVC
from sklearn.metrics import classification_report
from sklearn.decomposition import PCA
import pandas as pd
import numpy as np # 博文: http://www.cnblogs.com/Lin-Yi/p/8973077.html '''
主成分分析:
降低特征维度的方法。
不会抛弃某一列特征,
而是利用线性代数的计算,将某一维度特征投影到其他维度上去,
尽量小的损失被投影的维度特征 api使用:
estimator = PCA(n_components=20)
pca_x_train = estimator.fit_transform(x_train)
pca_x_test = estimator.transform(x_test) 分别使用支持向量机进行学习降维前后的数据再预测 该数据集源自网上 https://archive.ics.uci.edu/ml/machine-learning-databases/optdigits/
我把他下载到了本地
训练样本3823条, 测试样本1797条
图像通过8*8像素矩阵表示共64个维度,1个目标维度表示数字类别 ''' # 1 准备数据
digits_train = pd.read_csv("../data/optdigits/optdigits.tra", header=None)
digits_test = pd.read_csv("../data/optdigits/optdigits.tes", header=None)
# 从样本中抽取出64维度像素特征和1维度目标
x_train = digits_train[np.arange(64)]
y_train = digits_train[64]
x_test = digits_test[np.arange(64)]
y_test = digits_test[64] # 2 对图像数据进行降维,64维度降低到20维度
estimator = PCA(n_components=20)
pca_x_train = estimator.fit_transform(x_train)
pca_x_test = estimator.transform(x_test) # 3.1 使用默认配置的支持向量机进行学习和预测未降维的数据
svc = LinearSVC()
# 学习
svc.fit(x_train, y_train)
# 预测
y_predict = svc.predict(x_test) # 3.2 使用默认配置的支持向量机学习和预测降维后的数据
pca_svc = LinearSVC()
# 学习
pca_svc.fit(pca_x_train, y_train)
pca_y_predict = pca_svc.predict(pca_x_test) # 4 模型评估
print("原始数据的准确率:", svc.score(x_test, y_test))
print("其他评分:\n", classification_report(y_test, y_predict, target_names=np.arange(10).astype(str))) print("降维后的数据准确率:", pca_svc.score(pca_x_test, y_test))
print("其他评分:\n", classification_report(y_test, pca_y_predict, target_names=np.arange(10).astype(str))) '''
原始数据的准确率: 0.9165275459098498
其他评分:
precision recall f1-score support 0 0.98 0.98 0.98 178
1 0.73 0.99 0.84 182
2 0.98 0.97 0.98 177
3 0.96 0.88 0.92 183
4 0.94 0.95 0.95 181
5 0.91 0.96 0.93 182
6 0.99 0.96 0.98 181
7 0.98 0.92 0.95 179
8 0.84 0.79 0.81 174
9 0.94 0.76 0.84 180 avg / total 0.92 0.92 0.92 1797 降维后的数据准确率: 0.9220923761825265
其他评分:
precision recall f1-score support 0 0.97 0.97 0.97 178
1 0.93 0.86 0.89 182
2 0.96 0.97 0.96 177
3 0.93 0.87 0.90 183
4 0.94 0.97 0.96 181
5 0.86 0.96 0.91 182
6 0.97 0.98 0.98 181
7 0.97 0.88 0.92 179
8 0.89 0.89 0.89 174
9 0.82 0.88 0.85 180 avg / total 0.92 0.92 0.92 1797
'''

机器学习之路:python 特征降维 主成分分析 PCA的更多相关文章

  1. 机器学习之路:python 特征降维 特征筛选 feature_selection

    特征提取: 特征降维的手段 抛弃对结果没有联系的特征 抛弃对结果联系较少的特征 以这种方式,降低维度 数据集的特征过多,有些对结果没有任何关系,这个时候,将没有关系的特征删除,反而能获得更好的预测结果 ...

  2. 特征降维之PCA

    目录 PCA思想 问题形式化表述 PCA之协方差矩阵 协方差定义 矩阵-特征值 PCA运算步骤 PCA理论解释 最大方差理论 性质 参数k的选取 数据重建 主观理解 应用 代码示例 PCA思想 PCA ...

  3. sklearn 特征降维利器 —— PCA & TSNE

    同为降维工具,二者的主要区别在于, 所在的包不同(也即机制和原理不同) from sklearn.decomposition import PCA from sklearn.manifold impo ...

  4. 机器学习之路: python 回归树 DecisionTreeRegressor 预测波士顿房价

    python3 学习api的使用 git: https://github.com/linyi0604/MachineLearning 代码: from sklearn.datasets import ...

  5. 机器学习之路: python 线性回归LinearRegression, 随机参数回归SGDRegressor 预测波士顿房价

    python3学习使用api 线性回归,和 随机参数回归 git: https://github.com/linyi0604/MachineLearning from sklearn.datasets ...

  6. 机器学习之路: python 决策树分类DecisionTreeClassifier 预测泰坦尼克号乘客是否幸存

    使用python3 学习了决策树分类器的api 涉及到 特征的提取,数据类型保留,分类类型抽取出来新的类型 需要网上下载数据集,我把他们下载到了本地, 可以到我的git下载代码和数据集: https: ...

  7. 机器学习之路: python k近邻分类器 KNeighborsClassifier 鸢尾花分类预测

    使用python语言 学习k近邻分类器的api 欢迎来到我的git查看源代码: https://github.com/linyi0604/MachineLearning from sklearn.da ...

  8. 机器学习之路--Python

    常用数据结构 1.list 列表 有序集合 classmates = ['Michael', 'Bob', 'Tracy'] len(classmates) classmates[0] len(cla ...

  9. 什么是机器学习的特征工程?【数据集特征抽取(字典,文本TF-Idf)、特征预处理(标准化,归一化)、特征降维(低方差,相关系数,PCA)】

    2.特征工程 2.1 数据集 2.1.1 可用数据集 Kaggle网址:https://www.kaggle.com/datasets UCI数据集网址: http://archive.ics.uci ...

随机推荐

  1. POJ 1350 Cabric Number Problem (模拟)

    题目链接 Description If we input a number formed by 4 digits and these digits are not all of one same va ...

  2. vue项目的配置

    1.第一首先我们先安装:visual studio code开发环境,可以换成中文版的. 2.安装note.js   下载链接:https://nodejs.org/en/ 3.安装npm使用淘宝镜像 ...

  3. 工具推荐:Backdoor-apk,安卓APK文件后门测试工具

    工具推荐:Backdoor-apk,安卓APK文件后门测试工具 Backdoor-apk可以看成是一个shell脚本程序,它简化了在Android APK文件中添加后门的过程.安全研究人员在使用该工具 ...

  4. 18 - csv文件-ini文件处理

    目录 1 CSV文件 1.1 手动生成一个csv文件 1.2 cvs模块 1.2.1 reader方法 1.2.2 writer方法 2 ini文件处理 2.1 configparser模块 2.2 ...

  5. Git 管理本地代码【转】

    转自:http://www.cnblogs.com/JessonChan/archive/2011/03/16/1986570.html 以前用SVN,不过没有用出感情来:倒是用出不少怨恨:由于没有很 ...

  6. Serv-U 的升级及数据备份和迁移【转】

    Serv-U 配置备份   在serv-u7.x及以上版本安装目录下,有一个文件Serv-U.Archive是serv-u的配置文件,有一个users文件夹是Serv-U的域和用户的信息,那么我们只需 ...

  7. 吾修叫板微软,QMVC说比MVC5快!

    前段时间发一篇文章,是关于QMVC介绍的文章,有网友建议写篇关于测试结果的文章.毕竟QMVC是开源的,并且是倾向于性能级开发的,因为我实在不喜欢MVC5还采用跟web form一样的开发风格,不停的封 ...

  8. HTTP之二 http 301 和 302的区别

    1.什么是301转向?什么是301重定向? 301转向(或叫301重定向,301跳转)是当用户或搜索引擎向网站服务器发出浏览请求时,服务器返回的HTTP数据流中头信息(header)中的状态码的一种, ...

  9. 数据库-mysql数据库和表操作

    一:数据库查询增加删除 1)mysql数据库查询:show databases MariaDB [mysql]> show databases; +--------------------+ | ...

  10. 手淘移动适配方案flexible.js兼容bug处理

    什么是flexible.js 移动端自适应方案 https://www.jianshu.com/p/04efb4a1d2f8 什么是rem 这个单位代表根元素的 font-size 大小(例如 元素的 ...