sklearn库的-数据分析 机器学习(1)

sklearn库的-数据分析 机器学习(1)

什么是sklearn库

scikit-learn(sklearn)是一个基于Python语言的机器学习库,提供了各种常用的机器学习算法和数据预处理工具,可以帮助用户快速地搭建机器学习模型。本文将通过三个部分去介绍sklearn库在进行数据分析时的作用及用法。

1.数据预处理(preprocessing)

预处理是数据分析的重要步骤之一,它包括数据清洗特征选择特征提取数据变换等一系列操作,目的是将原始数据转换成更适合进行机器学习的形式。
在sklearn库中,预处理相关的模块主要包括以下几个:

数据预处理模块(preprocessing):这个模块提供了各种常用的数据预处理工具,比如标准化(StandardScaler)、归一化(MinMaxScaler)、正则化(Normalizer)等。

特征选择模块(feature_selection):这个模块提供了各种特征选择算法,可以帮助我们从原始数据中选择最重要的特征进行建模,比如卡方检验(chi2)、互信息(mutual_info_classif)、递归特征消除(RFECV)等。

特征提取模块(feature_extraction):这个模块提供了各种文本和图像特征提取算法,比如文本特征提取器(CountVectorizer、TfidfVectorizer)、图像特征提取器(HOG、SIFT、SURF)等。

数据预处理

  • 数据的标准化
    利用库中StandardScaler函数,将特征值转化为标准正态分布,即均值为0,方差为1的分布。
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
  • 数据的归一化
    利用库中的MinMaxScaler函数,将特征值缩放到给定范围内,通常是[0,1]。
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler(feature_range=(0, 1))
X_scaled = scaler.fit_transform(X)
  • 数据的正则化
    利用Normalizer函数,将特征向量缩放到单位范数(每个特征向量的欧几里得范数为1)。
from sklearn.preprocessing import Normalizer
scaler = Normalizer()
X_normalized = scaler.fit_transform(X)

特征选择模块:

  • 利用chi2函数进行卡方检验,用于检验特征和目标变量之间的相关性,常用于分类问题的特征选择。
from sklearn.feature_selection import SelectKBest, chi2
selector = SelectKBest(chi2, k=3)
X_new = selector.fit_transform(X, y)
  • 利用函数mutual_info_classif进行互信息,用于度量两个离散随机变量之间的相关性,通常用于分类问题的特征选择,常用于非线性。
from sklearn.feature_selection import SelectKBest, mutual_info_classif
selector = SelectKBest(mutual_info_classif, k=3)
X_new = selector.fit_transform(X, y)
  • 利用函数RFECV递归特征消除,用于自动选择最佳特征子集
from sklearn.feature_selection import RFECV
from sklearn.linear_model import LinearRegression
estimator = LinearRegression()
selector = RFECV(estimator, step=1, cv=5)
selector.fit(X, y)
X_new = selector.transform(X)

特征提取模块(feature_extraction)

CountVectorizer:将文本转化为词频向量。

from sklearn.feature_extraction.text import CountVectorizer
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(docs)

TfidfVectorizer:将文本转化为TF-IDF向量

from sklearn.feature_extraction.text import TfidfVectorizer
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(docs)

2.模型选择(model_selection)

模型选择是机器学习中非常重要的一步,它涉及到如何选择最佳的模型以及如何选择最佳的超参数等问题。在sklearn库中,模型选择相关的模块主要包括以下几个:

模型选择模块(model_selection):这个模块提供了各种常用的模型选择工具,比如交叉验证(cross_val_score、KFold)、网格搜索(GridSearchCV)等。

数据集划分模块(train_test_split):这个模块提供了数据集划分工具,可以将原始数据集划分成训练集和测试集,比如train_test_split

模型选择模块(model_selection)

  • cross_val_score:使用交叉验证评估模型性能。
from sklearn.model_selection import cross_val_score
scores = cross_val_score(estimator, X, y, cv=5)
  • GridSearchCV:使用网格搜索来选择最佳超参数。
from sklearn.model_selection import GridSearchCV
parameters = {
    
    'kernel':('linear', 'rbf'), 'C':[1, 10]}
clf = GridSearchCV(estimator, parameters)
clf.fit(X, y)

数据集划分模块(train_test_split)

  • train_test_split:将原始数据集划分成训练集和测试集。
from sklearn.model_selection import train_test
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)

其中参数test_size表示测试集的比例,random_state可以设置每次为相同的划分结果

数据降维模块(decomposition)

  • PCA:使用主成分分析进行数据降维。
from sklearn.decomposition import PCA
pca = PCA(n_components=2)#降维至两个向量
X_new = pca.fit_transform(X)

3.评估指标(metrics)

分类问题指标(classification)

  • accuracy_score:计算分类准确率
from sklearn.metrics import accuracy_score
y_pred = clf.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
  • confusion_matrix:计算分类混淆矩阵
from sklearn.metrics import confusion_matrix
confusion_matrix = confusion_matrix(y_test, y_pred)
  • classification_report:生成分类报告
from sklearn.metrics import classification_report
classification_report = classification_report(y_test, y_pred)

回归问题指标(regression)

  • mean_squared_error:计算均方误差
from sklearn.metrics import mean_squared_error
y_pred = clf.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
  • r2_score:计算R2得分
from sklearn.metrics import r2_score
y_pred = clf.predict(X_test)
r2_score = r2_score(y_test, y_pred)

猜你喜欢

转载自blog.csdn.net/m0_68678046/article/details/129835069