# 特征处理
# 特征预处理:通过统计方法将数据转换为算法需要的数据
# 数值型数据:标准缩放
# 规依法,标准化(常用,适用于当前大数据),缺失值处理(删除,填补中位数平均数,通常按照列填补)
# 类别型数据:ont-hot编码
# 时间类型:时间的切分
# 特征处理API sklearn.preprocessing
# ==============================================
# 归一化:对数据变化--->默认[0,1]之间
"""
new = (old-min)/(max-min) max,min 为某列最大值最小值
new2 = new*(mx-mi)+mi mx mi 为指定的区间默认
new2 即为转换后的值
MinScalar(feature_range=(0,1)...) 缩放函数
"""
# 当数据的n个特征同等重要的时候,要进行归一化,
# 使得某一个特征对最终结果不会造成更大的影响(其实主要与算法有关,)
# 容易受异常点影响,容易更改max,min的值
from sklearn.preprocessing import MinMaxScaler
matrix = [
[90,2,10,9000],
[60,4,15,45],
[75,3,13,46],
]
def mm():
"""
归一化处理
:return:
""" mms = MinMaxScaler(feature_range=(2,3))
data = mms.fit_transform(matrix)
print(data)
"""
[[3. 2. 2. 2. ]
[2. 3. 3. 2.83333333]
[2.5 2.5 2.6 3. ]]
"""
# ================================================
# 标准化(常用):使得某一特征不会对结果造成太大影响
# new=(old-平均)/标准差 对每一列来说
# 标准差 = 方差开平方
# 方差:考量数据的稳定性
# 处理后每个特征平均为0,方差为1,标准差为1
from sklearn.preprocessing import StandardScaler
def ss():
s = StandardScaler()
data = s.fit_transform(matrix)
print(data)
# =======================================
from sklearn.preprocessing import Imputer
# 填补NaN, 按照 mean, 列填补
# 数据中的缺失值要为 numpy.nan 类型 若不是 replace() 替换掉
import numpy as np
[[90, 2, 10, 9000],
[np.nan, 4, 15, 45],]
Imputer(missing_values="NaN",strategy="mean",axis=0)
Imputer(missing_values="nan",strategy="mean",axis=0)
# ====================================================== # 数据降维(注意不是数组的行数,列数) 指的是减少特征的数量
# 主要方法:特征选择,主成分分析
# 特征选择的原因:冗余,噪音
# 方式:
# 过滤式(主要过滤方差),例如方差为0的,或很小的 就可以过滤
# 嵌入式(正则化,决策树),
# 包裹式
# 神经网络
from sklearn.feature_selection import VarianceThreshold def var():
vt = VarianceThreshold(threshold=0.0) # threshold 根据情况获取
data = vt.fit_transform([
[0,2,0,3],
[0,1,4,3],
[0,1,1,3],
])
print(data)
"""
[[2 0] # 去掉了方差为0的列
[1 4]
[1 1]]
"""
# 主成分分析
from sklearn.decomposition import PCA
# PCA 分析,简化数据集的技术, 使数据压缩,减少数据维数(特征数量), 损失少量数据
# 特征数量过多的时候,考虑要不要使用使用PCA,(图片可能有上万个特征)
# 特征数量很少的时候,可以不使用
# PCA(n_components=) n_components
# 小数:指定保留的信息量 0-1之间 一般为0.90-0.95之间
# 整数:指定减少的特征数量(但自己通常不知道减少多少,因此不常使用)
def pca():
"""
主成分分析
:return:
"""
pc=PCA(n_components=0.92)
data = pc.fit_transform([
[2,8,4,5],
[6,3,0,8],
[5,4,9,1],
])
print(data)
"""
[[ 1.28620952e-15 3.82970843e+00]
[ 5.74456265e+00 -1.91485422e+00]
[-5.74456265e+00 -1.91485422e+00]]
"""
# =======================================================================
# 数据降维案例:用户对物品类别的喜好程度细分降维
# 数据:https://www.kaggle.com/c/instacart-market-basket-analysis/data
# products.csv:商品信息
# order_products_prior.csv:订单与商品信息
# orders.csv:用户订单信息
# aisles.csv:商品所属具体物品类别
# 首先表合并
import pandas as pd
data = pd.read_csv("E:\data\example\orders.csv")
print(data.head(10))
# data2 = pd.read_csv("")
# new=pd.merge(data2,data2,on=['product_id','product_id']) # 合并 两张表 on 表示以那个键合并
# 可再次合并
# -----------
# 交叉表(特殊的分组工具)
cross = pd.crosstab(data['user_id'],data['type']) # 第一个是行数据,第二个是列数据
# 第一列 为 user_id ,第一行为 物品类型
# 然后是 每个 user 买的各种物品的数量
# 显示了 用户 与他买的物品种类个数之间的关系
# 可使用pca降维 去掉无关项, 然后给算法使用 if __name__=="__main__":pass
# mm()
# ss()
# var()
# pca()

最新文章

  1. JavaScript框架设计(四) 字符串选择器(选择器模块结束)
  2. asp.net发邮件功能
  3. Virtual Box 杂记
  4. 传智播客JavaWeb day02笔记
  5. 【PHP代码审计】 那些年我们一起挖掘SQL注入 - 7.全局防护盲点的总结上篇
  6. .Xresources 配置文件
  7. iOS多线程总结(一)NSThread
  8. MySQL 5.6.19 二进制安装
  9. <%=id%>是什么意思
  10. QT在Windows控制台下输出
  11. Socket编程中 setsockopt的作用
  12. Gdevops2016年全球敏捷运维峰会【上海站】嘉宾阵容
  13. Swing-GridBagLayout用法-入门
  14. mysql进阶(二十七)数据库索引原理
  15. Android Binder IPC详解-Android学习之旅(96)
  16. [Swift]LeetCode670. 最大交换 | Maximum Swap
  17. vue学习笔记(WebStorm安装)
  18. “耐撕”团队 2016.03.31 站立会议
  19. 每位 Ubuntu 18.04 用户都应该知道的快捷键 | Linux 中国
  20. 在 子 iframe中 点击一个按钮, 变换 这个 iframe的地址url.

热门文章

  1. linux其他
  2. 使用注解方式实现 AOP和IoC
  3. qml 3d 纪念那些曾经爬过的坑
  4. 1825:【01NOIP提高组】数的划分
  5. 1 课务 iOS 概述
  6. 简述*args and **kwargs
  7. Java并发编程示例代码-----ReentrantLock
  8. python3实例
  9. docker 搭建registry
  10. Nexus 3搭建及备份恢复