降维指特征的数量
数据降维的方法:1.特征选择;2.主成分分析
1.1特征选择特征选择的原因:冗余:部分特征的相关度高,容易消耗计算机性能
噪声:
sklearn特征选择的API: sklearn.feature_selection.VarianceThreshold
PCA(主成分分析):特征数量达到上百的时候,考虑数据的简化问题;特征数量减少,数据也会改变
n_components:小数0-1 90% 最高在90-95%之间
1.2特征分析案例 2.机器学习的算法及其开发流程(1)算法是核心,数据和计算是基础
(2)找准定位,大部分复杂模型的算法设计都是计算机工程师在做,而我们分析很多的数据、分析具体的业务、应用常见的算法、特征工程调参数优化
我们应该怎么做:
1.学会分析问题,使用机器学习算法的目的,想要算法完成何种任务
2.掌握算法基本思想,学会对问题用相应的算法解决
3.学会利用库或者框架解决问题
2.1机器学习的算法数据类型不同,机器学习应用的算法不一样
监督学习:有特征值和目标值
非监督学习:特征值 很多个样本(比如:1000个样本)
分类:离散型数据类型
回归:连续性数据类型
2.2机器学习的开发流程
数据来源:1.公司本身就有数据;2.合作来的数据;3.购买的数据
开发流程:
(1)原始数据中应明确问题做什么,建立模型:根据数据类型划分应用种类
(2)数据的基本处理:pd去处理数据(缺失值,合并表。。。)
(3)特征工程(特征进行处理)(重要环节)
(4)寻找对应算法:分类、回归,进行预测
模型 = 算法 + 数据
(5)模型的评估,判定使用效果,以确定、修改或更改现有算法
(6)直接上线使用,以API形式提供
from sklearn.feature_selection import VarianceThreshold
from sklearn.decomposition import PCA
import pandas as pd
# 读取数据
prior = pd.read_csv("./data/……文件1路径")
products = pd.read_csv("./data/……文件2路径")
orders = pd.read_csv("./data/……文件3路径")
aisles = pd.read_csv("./data/……文件4路径")
# 合并四张表到一张表(用户-物品类别)
_mg = pd.merge(prior,products,on=['product_id', 'product_id'])
_mg = pd.merge(_mg, orders, on=['order_id', 'order_id'])
mt = pd.merge(_mg,aisles,on=['aisle_id','aisle_id'])
# 数据查看(前10个)
mt.head(10)
# 交叉表(特殊的分组工具)
cross = pd.crosstab(mt['user_id'],mt['aisle'])
# 打印交叉表前十个数据
cross.head(10)
# 进行主成分分析
pca = PCA(n_components=0.9)
data = pca.fit_transform(cross)
# 显示数据形状
sh = data.shape
print(sh)
def var():
"""
方差特征选择-删除低方差的特征
:return: None
"""
var = VarianceThreshold(threshold=0.0)
data = var.fit_transform([[0,2,0,3],[0,1,4,3],[0,1,1,3]])
print(data)
return None
def pca():
"""
主成分分析进行降维
:return: none
"""
pca = PCA(n_components=0.9) # n_components=0.9 保留90%的数据
data = pca.fit_transform([[2,8,4,5],[6,3,0,8],[5,4,9,1]])
print(data)
return None
if __name__ == "__main__":
pca()
3.sklearn数据集
将数据集分为训练集(一般75%)、测试集(一般25%)
sklearn数据集划分API:sklearn.model_selection.train_test_split
4.转化器与估计器
fit_transform():输入数据直接转换
fit():输入数据,但不做事情
transform():进行数据的转换



