【机器学习小白必备】Scikit-learn(Sklearn)最常用的函数这里都帮您总结好了~速速来取!持续更新!

2023-05-16

Scikit-learn(Sklearn)常用函数详解大全

在这篇文章中,总结了sklearn模块常用的函数,建议收藏!
因为会持续更新!

文章目录

  • Scikit-learn(Sklearn)常用函数详解大全
    • 自带的数据集
        • 经典的数据集
    • 分割测试集数据和训练集数据
    • 方法选择
        • 生成ROC曲线
        • 预测函数
    • 交叉验证最优参数(神好用!)
    • 模型准确率和评估报告模块
    • 使用模型的一般步骤及注意事项
    • 总结

自带的数据集

from sklearn.datasets import load_boston

清空sklearn环境下所有数据

datasets.clear_data_home()

经典的数据集

波士顿房价数据(回归)

load_boston

威斯康辛州乳腺癌数据(分类)

load_breast_cancer

糖尿病数据(回归)

load_diabetes

手写数字数据(分类)

load_digits

鸢尾花数据(分类)

load_iris

体能训练数据集(多变量回归)

load_linnerud

可在线下载的大规模数据集 脸部照片数据集

fetch_olivetti_faces

红酒数据举个栗子

wine = load_wine()
wine.data
wine.target
import pandas as pd
pd.concat([pd.DataFrame(wine.data), pd.DataFrame(wine.target)], axis = 1)

分割测试集数据和训练集数据

from sklearn import model_selection

代码原型及详解

X_train, X_test, y_train, y_test = train_test_split(train_data, train_target, test_size, random_state,shuffle)
# train_data:待划分的样本数据
# train_target:待划分的对应样本数据的样本标签
# test_size:1)浮点数,在0 ~ 1之间,表示样本占比(test_size = 0.3,则样本数据中有30%的数据作为测试数据,记入X_test,其余70%数据记入X_train,同时适用于样本标签);2)整数,表示样本数据中有多少数据记入X_test中,其余数据记入X_train
# random_state:随机数种子,种子不同,每次采的样本不一样;种子相同,采的样本不变(random_state不取,采样数据不同,但random_state等于某个值,采样数据相同,取0的时候也相同,这可以自己编程尝试下,不过想改变数值也可以设置random_state = int(time.time()))
# shuffle:洗牌模式,1)shuffle = False,不打乱样本数据顺序;2)shuffle = True,打乱样本数据顺序

代码举例

x_train, x_test, y_train, y_test = model_selection.train_test_split(x, y, test_size = 0.3, random_state = 1234)

方法选择

如果做分类问题,只需将Regression替换成Classifier即可

线性回归

from sklearn.linear_model import LinearRegression
model_linear_regression = LinearRegression()

SVM回归

from sklearn import svm
model_svm = svm.SVR()

决策树回归

from sklearn import tree
model_decision_tree_regression = tree.DecisionTreeRegressor()

KNN回归

from sklearn import neighbors
model_k_neighbor = neighbors.KNeighborsRegressor()

随机森林回归(20棵树)

from sklearn import ensemble
model_random_forest_regressor = ensemble.RandomForestRegressor(n_estimators=20)

Adaboost回归(50棵数)

from sklearn import ensemble
model_adaboost_regressor = ensemble.AdaBoostRegressor(n_estimators=50)

GBRT回归

from sklearn import ensemble
model_gradient_boosting_regressor = ensemble.GradientBoostingRegressor(n_estimators=100)

Bagging回归

from sklearn import ensemble
model_bagging_regressor = ensemble.BaggingRegressor()

ExtraTree极端随机数回归

from sklearn.tree import ExtraTreeRegressor
model_extra_tree_regressor = ExtraTreeRegressor()

PCA降维(保留n个特征)

from sklearn.decomposition import PCA
model_PCA = decomposition.PCA(n_components=n)

生成ROC曲线

y_score = AdaBoost1.predict_proba(X_test)[:,1]
fpr,tpr,threshold = metrics.roc_curve(y_test, y_score)
roc_auc = metrics.auc(fpr,tpr)

ROC曲线可以帮助分析当前选择的模型是否合适
如果生成的图像面积覆盖率达到了80%,一般认为该模型合理,否则建议换更精准的模型再计算

预测函数

经过训练后,电脑根据测试集得到的标签(结果是它自己认为的)

pred1 = AdaBoost1.predict(X_test)

同上,只不过这个生成的是概率

AdaBoost1.predict_proba(x_test)

将二者同时使用的效果更显著更直观

交叉验证最优参数(神好用!)

当模型中含有若干个重要参数,并且不知道如何设定才能让模型最优的时候,需要用到如下这个函数,方便得出参数的最优设定

from sklearn.model_selection import GridSearchCV

举个栗子和对应的解释

max_depth = [3,4,5,6]
params1 = {'base_estimator__max_depth':max_depth}
base_model = GridSearchCV(estimator = ensemble.AdaBoostClassifier(base_estimator = DecisionTreeClassifier()),
                          param_grid= params1, scoring = 'roc_auc', cv = 5, n_jobs = 4, verbose = 1)
base_model.fit(X_train[predictors],y_train)
# 返回参数的最佳组合和对应AUC值
base_model.best_params_, base_model.best_score_
# GridSearchCV 用于系统地遍历模型的多种参数组合,通过交叉验证确定最佳参数。
# estimator 分类器
# cv 默认为3 指定fold个数,即默认三折交叉验证
# n_jobs cpu个数 值为-1时,使用全部CPU;值为1时,使用1个CPU;值为2时,使用2个CPU
# verbose 默认为0 值为0时,不输出训练过程;值为1时,偶尔输出训练过程;值>1时,对每个子模型都输出训练过程
# param_grid 值为列表/字典
# scoring 准确度评价标准

模型准确率和评估报告模块

from sklearn import metrics

首先使用predict函数对x_test生成预测值

pred1 = AdaBoost1.predict(X_test)

再通过y_test和预测值生成准确率和评估报告

print('模型的准确率:',metrics.accuracy_score(y_test, pred1))
print('模型的评估报告:',metrics.classification_report(y_test, pred1))

还有一种更简单的生成准确率和方法

clf = tree.DecisionTreeClassifier()
clf = clf.fit(x_train, y_train)
score = clf.score(x_test, y_test)

使用模型的一般步骤及注意事项

  1. 首先要生成模型,或者可以说是模型的实例化
clf = tree.DecisionTreeClassifier()
  1. 实例化后才能进行训练,也有的人认为这一步是数据和模型的适配
clf = clf.fit(x_train, y_train)
  1. 若是归一化处理 有两种方式
transform(x_train)
fit_transform(x_train)

其中若是transform则需要先fit
若是fit_transform则不用实现fit,即将这两步合为一步

  1. 然后再做其他处理,生成准确率或者评估报告之类的

总结

sklearn是python机器学习必不可少的模块,省去了大量的数学公式,让代码变得十分简洁。需搭配上Pandas,Numpy等一些数据处理模块使用。笔者同样总结了Pandas,Numpy的常用函数:快来看这里有个传送门!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【机器学习小白必备】Scikit-learn(Sklearn)最常用的函数这里都帮您总结好了~速速来取!持续更新! 的相关文章

随机推荐