主成分分析

PCA顾名思义,就是找出数据里最主要的方面,用数据里最主要的方面来代替原始数据。具体的,假如我们的数据集是 n维的,共有 m 个数据 (x_{1},x_{2},…,x_{m}) 。我们希望将这 m 个数据的维度从 n 维降到 n’ 维,希望这 m 个 n’ 维的数据集尽可能的代表原始数据集。我们知道数据从 n 维降到 n’ 维肯定会有损失,但是我们希望损失尽可能的小。

成人收入分析

数据集

file = "adult/adult.data"
data = pd.read_csv(file,header = None,names=["Age", "Work-Class", "fnlwgt", "Education","Education-Num", "Marital-Status", "Occupation","Relationship", "Race", "Sex", "Capital-gain","Capital-loss", "Hours-per-week", "Native-Country","Earnings-Raw"])
# drop the blank line
data.dropna(inplace=True)
data.iloc[:5]
data["Hours-per-week"].describe()
data["Education-Num"].median()
data["Work-Class"].unique()
data["LongHours"] = data["Hours-per-week"] > 40
data[:5]

选取好的特征

from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2# choose three best features
transformer = SelectKBest(score_func=chi2,k = 3)
Xt_chi2 = transformer.fit_transform(X,y)
print(Xt_chi2[:5])
#the highest is age,capital-gain,capital-loss
print(transformer.scores_)
from scipy.stats import pearsonr
def multivariate_pearsonr(X,y):scores,p_values = [],[]for column in range(X.shape[1]):cur_score,cur_p = pearsonr(X[:,column],y)scores.append(cur_score)p_values.append(cur_p)return (np.array(scores),np.array(p_values))
transformer = SelectKBest(score_func=multivariate_pearsonr,k=3)
Xt_pearson = transformer.fit_transform(X,y)
print(Xt_pearson[:5])# Age,Education-num,Hours-per-week
print(transformer.scores_)

模型建立及评估

from sklearn.tree import DecisionTreeClassifier
from sklearn.cross_validation import cross_val_score
clf = DecisionTreeClassifier(random_state=14)
scores_chi2 = cross_val_score(clf,Xt_chi2,y,scoring="accuracy")
scores_pearson = cross_val_score(clf,Xt_pearson,y,scoring="accuracy")
print("Chi2 performance {0:.1f}%".format(np.mean(scores_chi2)*100))
print("Pearson performance {0:.1f}&".format(np.mean(scores_pearson)*100))

最终chi2结果为0.85,而pearson的结果为0.75。

网站广告分析

数据集

import numpy as np
import pandas as pd
file = "ad-dataset/ad.data"
def convert_num(x):try:return float(x)except ValueError:return np.nanfrom collections import defaultdict
converters = defaultdict(convert_num)
# set the final column
converters[1558] = lambda x:1. if x.strip() == "ad." else 0.
for column in range(1558):converters[column] = convert_num
ads = pd.read_csv(file,header=None,converters=converters)
#ads[2] = pd.to_numeric(ads[2],errors='coerce')
print(ads.shape)
# for column in range(ads.shape[1]-1):
#     ads[column] =  pd.to_numeric(ads[column],errors='coerce').astype('float')
# ads[1558] = ads[1558].apply(lambda x:1. if x.strip() == "ad." else 0.)
ads.dropna(inplace=True)
print(ads.shape)
print(ads[:5])

PCA选取特征

X = ads.drop(1558,axis = 1).values
y = ads[1558]
print(X.shape,y.shape)
from sklearn.decomposition import PCA
pca = PCA(n_components = 5)
Xd = pca.fit_transform(X)
print(Xd[:5])np.set_printoptions(precision = 3,suppress=True)
pca.explained_variance_ratio_

模型建立及评估

from sklearn.tree import DecisionTreeClassifier
from sklearn.cross_validation import cross_val_score
clf = DecisionTreeClassifier(random_state=14)
scores_pca = cross_val_score(clf,Xd,y,scoring='accuracy')
print("The accuracy is {0:.4f}".format(np.mean(scores_pca)))
%matplotlib inline
from matplotlib import pyplot as plt
# only two:is ad or not
classes = set(y)
colors = ["red","green"]
for cur_class,color in zip(classes,colors):mask = (y == cur_class).valuesplt.scatter(Xd[mask,0],Xd[mask,1],marker='o',color=color,label=int(cur_class))
plt.legend()
plt.show()

最终结果准确率为:0.9326

主成分分析提取好的特征相关推荐

  1. 高光谱提取薯叶特征波长

    高光谱提取薯叶特征波长 1.发现问题 针对马铃薯晚疫病 2.研究基本思想 对健康和病害叶片的光谱图像进行主成分分析,并从主成分图像的权重系数曲线中提取出 6 个健康叶片特征波长和病害叶片特征波长.基于 ...

  2. 【脑电信号分类】脑电信号提取PSD功率谱密度特征

    本文是由CSDN用户[frostime]授权分享.主要介绍了脑电信号提取PSD功率谱密度特征,包括:功率谱密度理论基础.matlab中PSD函数的使用介绍以及实验示例.感谢 frostime! 1. ...

  3. tensorflow提取mel谱特征_【脑电信号分类】脑电信号提取PSD功率谱密度特征

    点击上面"脑机接口社区"关注我们 更多技术干货第一时间送达 本文是由CSDN用户[frostime]授权分享.主要介绍了脑电信号提取PSD功率谱密度特征,包括:功率谱密度理论基础. ...

  4. 特征点提取—尺度不变特征SIFT算法

    目录 SIFT算法概述 尺度空间与与金字塔表达 1 高斯模糊 2 金字塔构建 2.1 金字塔多分辨率 3.空间极值点检测(关键点的初步探查) 4.关键点描述 4.1 KPD生成 4.2.关键点的主方向 ...

  5. AI人工智能分析-人脸识别和分析(人脸检测跟踪、获取特征长度、提取用于人脸特征、比较相似度)

             AI人工智能分析-人脸识别和分析(人脸检测跟踪.获取特征长度.提取用于人脸特征.比较相似度) 人工智能(Artificial Intelligence),英文缩写为AI.它是研究.开 ...

  6. python实现cnn特征提取_使用PyTorch提取CNNs图像特征

    目录 简要介绍PyTorch.张量和NumPy 为什么选择卷积神经网络(CNNs)? 识别服装问题 使用PyTorch实现CNNs 1.简要介绍PyTorch.张量和NumPy 让我们快速回顾一下第一 ...

  7. opencv双目视觉标定,激光结构光提取,指定特征点获取世界坐标

    双目视觉标定,激光结构光提取,指定特征点获取世界坐标 标定方面 校正 结构光提取 二维点转换为三维点 总结 这学期在做双目视觉方面的事情,因为没人带,自己一个人踩了很多坑,因此在这写一点自己的总结心得 ...

  8. 【图像识别算法】像素级提取图像关键特征、内容 --python代码

    像素级提取图像关键特征算法-rgb 关键词:python像素级处理图像,python提取图片关键特征. 基于knn的图像识别技术主要涉及到以下概念: 色彩成像原理 [图像原理]rgb数字图片概念 计算 ...

  9. LBP算法提取图片纹理特征图

    LBP算法提取图片纹理特征图 一.项目目标 采用LBP算法提取图片的纹理特征图. 二.LBP算法原理 LBP指局部二值模式,英文全称:Local Binary Patterns.最初功能为辅助图像局部 ...

  10. 影像组学视频学习笔记(41)-如何使用软件提取组学特征、Li‘s have a solution and plan.

    作者:北欧森林 链接:https://www.jianshu.com/p/72186eb3e395 来源:简书,已获授权转载 本笔记来源于B站Up主: 有Li 的影像组学系列教学视频 本节(41)主要 ...

最新文章

  1. 传感器追踪身体健康数据 可穿戴式将帮助人体实时监测外界伤害
  2. Amazon Corretto技术细节探秘
  3. 浏览器事件循环与node事件循环
  4. python中零碎的一点东西
  5. MERGE语句——数据集横向合并
  6. 一行代码搞定 FTP 服务
  7. 配置纯净版Debian
  8. C/C++函数调用的压栈模型
  9. 2014全国计算机二级ms office,2014计算机二级MS Office真题及答案
  10. [开发技巧3]不显示报表直接打印
  11. python 论文数据处理_用Python一次性把论文作图与数据处理全部搞定!
  12. C/C++ 指针数组、二维数组
  13. 怎么调用anaconda安装的pip_对于学python的小伙伴来到底该不该安装andconda
  14. jmeter throughput图表_jmeter生成HTML格式性能测试报告
  15. retainall java_java用retainALL 处理两个具有相同元素的list,竟然返回false,这是为什么?...
  16. Mac 锁屏的各种方法
  17. vue 不是内部或外部命令
  18. 又拍云叶靖:基于Docker的云处理服务平台
  19. 调用系统safair 在模拟器下无法成功
  20. FileZilla软件的下载、服务器站点配置与数据传输方法

热门文章

  1. DOTA模式命令详解 及 DotA英雄英文名字和简称
  2. 一衣带水 守望相助:中日夫妻七七再行慈善之旅
  3. 怎样用计算机绘制幂函数图像,几何画板如何画幂函数的图像 绘制方法介绍
  4. 绿色建筑推动海口智慧城市发展
  5. ECCV 2022 | 谷歌提出:k-means Mask Transformer
  6. shopex mysql 数据库服务器_[日记] shopex转移以及MySql简单操作命令
  7. “看来少宇这家伙身上有着惊天的秘密啊
  8. 宇枫资本如何挑选靠谱理财平台
  9. 工程图字体宋体仿宋_设计干货来了!最热门的宋体字要如何设计搭配?
  10. 15个经典面试问题及回答思路,经典好文