Machine learning_ réduction de la dimensionnalité des données, division des données

1. Réduction de la dimensionnalité des données

(1) Signification
La réduction de la dimensionnalité des données consiste à réduire le nombre de fonctionnalités et à optimiser le fonctionnement de l'algorithme.

(2) Méthodes de réduction de dimensionnalité

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) Exemples de réduction de dimensionnalité

# 下面是利用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)

Deuxièmement, la division des données
Parce qu'il est nécessaire d'évaluer les avantages et les inconvénients de la formation par modèle, l'ensemble de test est divisé en ensemble d'apprentissage et ensemble de test. Nous pouvons compter sur des fonctions pour nous aider à compléter une meilleure classification.

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)

Trois, convertisseur et estimateur

(1) Convertisseur

fit_transform 

Il peut être remplacé par deux parties, la première calcule la moyenne et la variance et la seconde calcule.

(2) Estimateur

Dans sklearn, l'estimateur est un rôle important, et le classifieur et le régresseur appartiennent à l'estimateur, qui est une sorte d'API qui implémente l'algorithme.

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

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

Workflow de l'estimateur
Insérez la description de l'image ici

Je suppose que tu aimes

Origine blog.csdn.net/tjjyqing/article/details/113953991
conseillé
Classement