12.数据的降维之特征选择
特征选择
- 冗余:部分特征的相关度高,容易消耗计算性能
- 噪声:部分特征对预测结果有负影响
特征选择就是单纯地从提取到的所有特征中选择部分特征作为训练集特征,特征在选择前和选择后可以改变值、也不改变值,但是选择后的特征维数肯定比选择前小,毕竟我们只选择了其中的一部分特征。
主要方法(三大武器):
- Filter(过滤式):VarianceThreshold
- Embedded(嵌入式):正则化、决策树
- Wrapper(包裹式)
sklearn特征选择API
sklearn.feature_selection.VarianceThreshold
VarianceThreshold语法
VarianceThreshold(threshold = 0.0)
-
删除所有低方差特征
Variance.fit_transform(X,y)
-
X:numpy array格式的数据[n_samples,n_features]
- 返回值:训练集差异低于threshold的特征将被删除。 默认值是保留所有非零方差特征,即删除所有样本 中具有相同值的特征。
from sklearn.feature_selection import VarianceThreshold
def var():
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
var()
[[2 0]
[1 4]
[1 1]]
PCA(主成分分析)
- 本质:PCA是一种分析、简化数据集的技术
- 目的:是数据维数压缩,尽可能降低原数据的维数(复杂度),损失少量信息。
- 作用:可以削减回归分析或者聚类分析中特征的数量
PCA语法
PCA(n_components=None)
- 将数据分解为较低维数空间
PCA.fit_transform(X)
- X:numpy array格式的数据[n_samples,n_features]
- 返回值:转换后指定维度的array
from sklearn.decomposition import PCA
def pca():
pca = PCA(n_components=0.9)
data = pca.fit_transform([[2,8,4,5],[6,3,0,8],[5,4,9,1]])
print(data)
return None
pca()
[[ 1.28620952e-15 3.82970843e+00]
[ 5.74456265e+00 -1.91485422e+00]
[-5.74456265e+00 -1.91485422e+00]]
13、14.降维案例
用户对物品类别的喜好细分降维
import pandas as pd
from sklearn.decomposition import PCA
#读取四张表
prior = pd.read_csv("/Users/zhucan/Desktop/instacart-market-basket-analysis/order_products__prior.csv")
products = pd.read_csv("/Users/zhucan/Desktop/instacart-market-basket-analysis/products.csv")
orders = pd.read_csv("/Users/zhucan/Desktop/instacart-market-basket-analysis/orders.csv")
aisles = pd.read_csv("/Users/zhucan/Desktop/instacart-market-basket-analysis/aisles.csv")
#合并四张表
_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"])
cross = pd.crosstab(mt["user_id"],mt["aisle"])
pca =PCA(n_components=0.9)
data = pca.fit_transform(cross)
print(pca)
[[-2.42156587e+01 2.42942720e+00 -2.46636975e+00 ... 6.86800336e-01
1.69439402e+00 -2.34323022e+00]
[ 6.46320806e+00 3.67511165e+01 8.38255336e+00 ... 4.12121252e+00
2.44689740e+00 -4.28348478e+00]
[-7.99030162e+00 2.40438257e+00 -1.10300641e+01 ... 1.77534453e+00
-4.44194030e-01 7.86665571e-01]
...
[ 8.61143331e+00 7.70129866e+00 7.95240226e+00 ... -2.74252456e+00
1.07112531e+00 -6.31925661e-02]
[ 8.40862199e+01 2.04187340e+01 8.05410372e+00 ... 7.27554259e-01
3.51339470e+00 -1.79079914e+01]
[-1.39534562e+01 6.64621821e+00 -5.23030367e+00 ... 8.25329076e-01
1.38230701e+00 -2.41942061e+00]]
15.机器学习算法分类以及开发流程
机器学习基础
(1)算法是核心,数据和计算是基础
(2)找准定位 大部分复杂模型的算法设计都是算法工程师在做,而我们
- 分析很多的数据
- 分析具体的业务
- 应用常见的算法
- 特征工程、调参数、优化
数据类型
离散型数据:由记录不同类别个体的数目所得到的数据,又称计数数据,所有这些数据全部都是整数,而且不能再细分,也不能进一步提高他们的精确度。
连续型数据:变量可以在某个范围内取任一数,即变量的取值可以是连续的,如,长度、时间、质量值等,这类整数通常是非整数,含有小数部分。
机器学习算法分类
监督学习(特征值+目标值)
- 分类 (目标值离散型) k-近邻算法、贝叶斯分类、决策树与随机森林、逻辑回归、神经网络
- 回归(目标值连续性)线性回归、岭回归
- 标注 隐马尔可夫模型(不做要求)
无监督学习(特征值)
- 聚类 k-means