机器学习_数据降维、数据划分

一、数据的降维

(1)含义
数据降维是减少特征的数量,优化算法的运行。

(2)降维的方法

1>过滤式特征选择
# 除去方差小于某个值的那一列特征
from sklearn.feature_selection import VarianceThreshold

def var():
    var = VarianceThreshold(threshold=0.0)  # 过滤式特征选择,这里是除去为零的特征
    x = [[0, 2, 0, 3], [0, 1, 4, 3], [0, 1, 1, 3]]
    data = var.fit_transform(x)
    print(data)
    return None
#结果是
[[2 0]
 [1 4]
 [1 1]]

2>主成分分析
from sklearn.decomposition import PCA

def pca():
    pca = PCA(n_components=0.9) 
    #保留90%特征的意思
    x = [[2,8,4,5],[6,3,0,8],[5,4,9,1]]
    data = pca.fit_transform(x)
    print(data)
    return None
#结果
[[ 1.22879107e-15  3.82970843e+00]
 [ 5.74456265e+00 -1.91485422e+00]
 [-5.74456265e+00 -1.91485422e+00]]

(3)降维的实例运用

# 下面是利用kaggle上的数据探究用户对物品类别的喜好细分
>>1首先我们获取的数据是有很多的表格,我们需要连接他们

# 运用pandas中merge合并表
import pandas as pd
from sklearn.decomposition import PCA

# 读取表格

order_product = pd.read_csv("./data/instacart/order_products__prior.csv")
products = pd.read_csv("./data/instacart/products.csv")
orders = pd.read_csv("./data/instacart/orders.csv")
aisles = pd.read_csv("./data/instacart/aisles.csv")

#合并表格

table1 = pd.merge(order_product, products, on=["product_id", "product_id"])
table2 = pd.merge(table1, orders, on=["order_id", "order_id"])
table = pd.merge(table2, aisles, on=["aisle_id", "aisle_id"])


>>2然后我们要把表格变成适用机器学习的方式
# 行为用户,列为不同物品的类别

# 利用pandas中crosstab来交叉表(指定行和列)

table = pd.crosstab(table["user_id"], table["aisle"])

>>3利用PCA进行主成分分析

transfer = PCA(n_components=0.9)
data = transfer.fit_transform(table)

>>4最后我们可以进行主成分分析并查看剩余的特征数量

print(data.shape)

二、数据的划分
因为要评估模型训练的优劣,所以要将测试集分为训练集和测试集。我们可以依靠函数帮助我们完成较好的分类。

from sklearn.datasets import load_iris
#调取sklearn中存在的数据集iris

from sklearn.model_selection import train_test_split
#调取划分数据集的函数  train_test_split

 li = load_iris()
print("获取特征值")
print(li.data)
print("目标值")
print(li.target)
print(li.DESCR)

# 注意返回值, 训练集 train  x_train, y_train        测试集  test   x_test, y_test
# x为特征集,y为目标集
x_train, x_test, y_train, y_test = train_test_split(li.data, li.target, test_size=0.25)
#注意顺序哦

print("训练集特征值和目标值:", x_train, y_train)
print("测试集特征值和目标值:", x_test, y_test)

三、转换器与估计器

(1)转换器

fit_transform 

可以换成两部分,前者求均值和方差,后者运算。

(2)估计器

在sklearn中,估计器(estimator)是一个重要的角色,分类器和回归器都属于estimator,是一类实现了算法的API。

#用于分类的估计器:
sklearn.neighbors	k-近邻算法
sklearn.naive_bayes      贝叶斯
sklearn.linear_model.LogisticRegression 逻辑回归

#用于回归的估计器:
sklearn.linear_model.LinearRegression   线性回归
sklearn.linear_model.Ridge      岭回归 

估计器的工作流程
在这里插入图片描述

扫描二维码关注公众号,回复: 12576761 查看本文章

猜你喜欢

转载自blog.csdn.net/tjjyqing/article/details/113953991