主成分分析:
降低特征维度的方法。
不会抛弃某一列特征,
而是利用线性代数的计算,将某一维度特征投影到其他维度上去,
尽量小的损失被投影的维度特征
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. D - Balanced Ternary String (贪心)

    题目链接:http://codeforces.com/contest/1102/problem/D 题目大意:给你一个字符串,这个字符串是由0,1,2构成的,然后让你替换字符,使得在替换的次数最少的前 ...

  2. Q - Phalanx

    题目链接:https://vjudge.net/contest/68966#problem/Q 分析:这里的对称并不是指的是关于原矩阵(也就是最大的那一个)主对角线对称,而是对于每一个小的矩阵来说,当 ...

  3. vtk 基础概念

    #include <vtk-5.10/vtkSmartPointer.h>#include <vtk-5.10/vtkRenderWindow.h>#include <v ...

  4. nginx自定义500,502,504错误页面无法跳转【转】

    1.自定一个页面,这个页面是一个链接地址可以直接访问的. 以下是nginx的配置: location / {            proxy_pass http://tomcat_app108;   ...

  5. [转]关于MyEclipse下的项目无法使用BASE64Encoder问题的解决办法

    [链接] http://blog.csdn.net/longlonglongchaoshen/article/details/75087616

  6. Ubuntu_搜狗输入法安装

    前言 由于很少使用Linux系统,所以闲下来打算看一看,在安装完成后,遇到无法输入中文的问题.我使用的是小鹤双拼,所以习惯使用搜狗输入法,本文记录一下如何在ubuntu系统下安装小鹤双拼 由于前两次并 ...

  7. Python [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed 解决方法

    一个搭建在SAE上的Django应用,使用新浪微博提供的Python SDK已经稳定运行一年有余,但最近开始持续出现微博认证失败的状况. 摘录微博python SDK的错误提示如下所示: ERROR: ...

  8. DOS命令基础,包涵DOS库说明书

    20种常用的DOS命令小结 作者: 字体:[增加 减小] 类型:转载   DOS命令总共大约有一百个(包括文本编辑.查杀病毒.配置文件.批处理等),我们这里详细介绍二十个常用的DOS命令     先介 ...

  9. CF312B 【Archer】

    容易算出这人第一次胜利的概率,第二次的,第三次的…… 好像可以无限乘下去 但是这题精度卡到1e-6 不妨设一个eps,当这次胜率小于eps时,就break掉,反正它已经不影响答案了 我设的是eps=1 ...

  10. linux下Ctrl命令组合

    1.键盘组合键操作 ctrl-c 发送 SIGINT 信号给前台进程组中的所有进程.常用于终止正在运行的程序. ctrl-z 发送 SIGTSTP 信号给前台进程组中的所有进程,常用于挂起一个进程.  ...