learn的用法(7个常用的Scikit-learn使用技巧)

learn的用法
概述Scikit learn,或sklearn,是机器学习一个强大的库学习sklearn的关键技巧、和诀窍,掌握该库,成为一名高效的数据科学家介绍这一切都始于掌握Python的scikit学习库。sklearn为我们提供了学习、执行和改进机器学习模型的途径,这是我学到的第一个行业级的Python库,从那以后它为我提供了非常好的服务!Sklearn是机器学习一个强大的库,它是你的数据科学武器库中不可或缺的工具,它将为你开辟一条穿越看似不可跨越的障碍的道路。我个人喜欢使用sklearn库。sklearn提供了很好的灵活性,而且由于它易于理解的文档,它为Python中最流行的机器学习库奠定了基础。由于sklearn是我们机器学习项目的基础,因此我们必须了解一些鲜为人知但功能强大的特点,这些功能将在模型构建过程为你提供更多控制和功能。此外,如果你有自己的数据科学技巧和窍门,可以在这个GitHub存储库上与社区共享https://github.com/kunalj101/Data-Science-Hacks目录在本文中,我们将介绍以下数据科学的sklearn技巧和窍门:Scikit learn 技巧1–用于回归的虚拟数据Scikit learn 技巧2–使用迭代法输入缺失值Scikit learn 技巧3–从模型中选择特征Scikit learn 技巧4–建立分类的baseline模型Scikit learn 技巧5–绘制混淆矩阵Scikit learn 技巧6–预处理异构数据Scikit learn 技巧7-Pickle持久化模型Scikit learn 技巧1–用于回归的虚拟数据让我们从最基本的开始,你可以使用sklearn的make_regression函数生成自己的随机数据来执行线性回归。在需要调试算法的情况下,或者在需要小的随机数据集时,它非常有用,此函数的优点是,它使你能够完全控制数据。*make_regression()*生成一个数据集,其中自变量和因变量具有线性关系。你可以调整参数以获得所需的数据集。让我们了解一下在这个例子中它是如何工作的:视频:https://youtu.be/yuin__dc3ekfrom sklearn import linear_model, datasetsimport matplotlib.pyplot as plt
X, y, coef = datasets.make_regression(n_samples=1000, n_features=1, n_informative=1, noise=10, coef=True, random_state=0)
plt.scatter(X,y)Jupyter:https://github.com/kunalj101/Data-Science-Hacks/blob/master/Code/make_regression.ipynbScikit learn 技巧2–使用迭代法输入缺失值很多时候,我们坚持使用简单而传统的方法来估算缺失值,例如使用均值/中位数进行估算,然后使用模型进行分类,但是当我们拥有先进的方法时,为什么要限制自己呢?迭代插补(IterativeImputer)是一种多变量的插补方法,即利用全部特征来估计缺失值。在迭代输入策略中,建立机器学习模型来估计缺失值,每个缺少值的特征都被视为其他特征的函数,这是以循环的方式完成的。简单地说,缺少值的特征是“y”,其他特征列变为“X”。视频:https://youtu.be/trOlEuUVB1Mimport numpy as np
# 我们需要显式地导入它from sklearn.experimental import enable_iterative_imputer from sklearn.impute import IterativeImputer
# 测试集data = [[1, 2, 3, 4, np.nan], [5, 6, 7, 8, 11], [9, 1, 12, 2, 3], [4, np.nan, 5, 6, 7], [4, 8, 1, 2, 3]]
# 使用IterativeImpute来填充缺失值iter_imp = IterativeImputer(random_state= 34)iter_imp.fit_transform(data)Jupyter:https://github.com/kunalj101/Data-Science-Hacks/blob/master/Code/iterative_imputer.ipynbScikit learn 技巧3–从模型中选择特征有多种方法可以为你的模型选择特征,但我有一个最喜欢的函数来完成这项工作-sklearn的SelectFromModel,它是基于权重的重要性来选择特征。你可以从一系列estimator中进行选择,但请记住,estimator在拟合后必须具有特征重要性或coef属性。视频:https://youtu.be/kyOubc1GvaIimport pandas as pdfrom sklearn.feature_selection import SelectFromModelfrom sklearn.linear_model import LassoCVfrom sklearn.datasets import load_boston
# titanic 数据集data = pd.read_csv(‘../Data/data_cleaned.csv’)data.head()
#分为训练集和测试集from sklearn.model_selection import train_test_split

# 分离因变量和自变量x = data.drop([‘Survived’], axis = 1)y = data[‘Survived’]
train_X, test_X, train_y, test_y = train_test_split(x,y, stratify = y, random_state =34)train_y.value_counts(normalize = True)
#使用LassoCVclf = LassoCV()
# 特征选择# 使用均值sfm = SelectFromModel(clf, threshold = ‘mean’)sfm.fit(train_X,train_y)n_features = sfm.transform(train_X).shape[1]n_features
sfm.get_support(indices = True)Jupyter:https://github.com/kunalj101/Data-Science-Hacks/blob/master/Code/FeatureSelection_SelectFromModel.ipynbScikit learn 技巧4–建立分类的Baseline模型你如何判断你的机器学习模式?你比较的依据是什么?解决方案是一个Baseline模型。一个Baseline模型是用非常简单和基本的规则构建的。在构建Baseline模型之后,你将着手制定复杂的解决方案,这些解决方案的性能必须优于Baseline模型。Sklearn提供了一个非常简单的函数来完成这项工作——DummyClassifier。这有多种策略,例如:“stratified”:根据训练集的类分布生成预测“most_frequent”:总是预测训练集中最频繁的标签“uniform”:生成随机一致的预测请注意,这个分类器作为一个简单的Baseline,可以用来与真实的分类器进行比较,并且不能用于实际的问题。视频:https://youtu.be/TpTCXEZMhHIimport pandas as pdfrom sklearn.dummy import DummyClassifier
#导入数据data = pd.read_csv(‘../Data/loan_train.csv’)data.head()
#因变量和自变量
X = data.drop(“Loan_Status”, axis = 1)y = data[“Loan_Status”]
# 策略为“most_frequent”的分类器dummy_clf = DummyClassifier(strategy=”most_frequent”)dummy_clf.fit(X, y)
dummy_clf.predict(X)
dummy_clf.score(X, y)
# 这是我们的基础模型,我们的“真实”模型必须比这更好Jupyter:https://github.com/kunalj101/Data-Science-Hacks/blob/master/Code/Dummy%20Classifier.ipynbScikit learn 技巧5–绘制混淆矩阵最新的sklearn版本的一个很好的补充是新函数plot_confusion_matrix。该函数会为分类器生成一个非常直观和可定制的混淆矩阵。额外提示:你可以使用values_format参数指定框中出现的数字格式(“n”表示整数,“.2f”表示浮点等)。视频:https://youtu.be/ZqY9eGyLqYA#导入库import pandas as pd import numpy as npimport matplotlib.pyplot as plt

data = pd.read_csv(“titanic.csv”)
#分离因变量和自变量
x = data.drop([‘Survived’], axis=1)y = data[‘Survived’]
from sklearn.preprocessing import StandardScalerss = StandardScaler()x = ss.fit_transform(x)from sklearn.model_selection import train_test_splittrain_x,test_x,train_y,test_y = train_test_split(x,y, random_state = 42, stratify=y)
# KNN实例from sklearn.neighbors import KNeighborsClassifier as KNNclf = KNN(n_neighbors = 3)
# 拟合模型clf.fit(train_x, train_y)
# 对训练集和测试集进行预测train_predict = clf.predict(train_x)test_predict = clf.predict(test_x)from sklearn import metrics
#Titanic数据集disp = metrics.plot_confusion_matrix(clf, test_x, test_y, values_format = ‘n’, display_labels = [‘Survived’, “Didn’t Survive”] )Jupyter:https://github.com/kunalj101/Data-Science-Hacks/blob/master/Code/plot_confusion_matrix.ipynbScikit learn 技巧6–预处理异构数据现实世界中的数据很少是同构的,也就是说,它包含具有不同数据类型的列,所以在所有列上分别应用不同的转换是一个挑战。Sklearn的ColumnTransform提供了一个简单的解决方案。ColumnTransform 将转换器应用于数组或Pandas数据帧的列。我们将简单地以列表的形式输入到转换器。指定transformer对象的元组(name, transformer, column(s))列表就可以应用于数据。ColumnTransformer 在数据预处理阶段非常方便,在数据管道中得到了广泛的应用。视频:https://youtu.be/tXQpuUz9XeAimport pandas as pdfrom sklearn.compose import ColumnTransformer
# 导入数据data = pd.read_csv(‘../Data/loan_train.csv’)data.head()
# 为了简单起见,删除了空值的行data.dropna(inplace = True)
#因变量和自变量X = data.drop(‘Loan_Status’, axis = 1)y = data[‘Loan_Status’]
#对数值特征应用StandardScalar变换#对名称特征应用OneHotEncoder变换
from sklearn.preprocessing import StandardScaler, OneHotEncoder
transformers = [(“num”, StandardScaler(), [‘ApplicantIncome’, ‘CoapplicantIncome’, ‘LoanAmount’]), (“cat”, OneHotEncoder(handle_unknown=’ignore’), [‘Gender’, ‘Married’, ‘Self_Employed’, ‘Property_Area’])]
transformer = ColumnTransformer(transformers = transformers)
X = transformer.fit_transform(X)X[0]Jupyter:https://github.com/kunalj101/Data-Science-Hacks/blob/master/Code/plot_confusion_matrix.ipynbScikit learn 技巧7-Pickle持久化模型我们通常创建一个函数来编写一段可重用的代码,但是当我们想要重用我们的模型时,我们应该怎么做呢?我们用Pickle!在训练了机器学习模型之后,你可能希望使用它而不必从头开始重新训练它——这就是所谓的模型持久化。让我们看看如何使用Pickle保存机器学习模型:视频:https://youtu.be/SvLVWkIumt0#导入库import pandas as pdimport numpy as npimport sklearn
#导入数据集data = pd.read_csv(‘../Data/data_cleaned.csv’)data.head()
#因变量和自变量X = data.drop(‘Survived’, axis = 1)y = data[‘Survived’]
# 分离为训练集和测试集from sklearn.model_selection import train_test_splittrain_X, test_X, train_y, test_y = train_test_split(X, y, test_size = 0.3, random_state = 142)
# 导入 KNeighborsClassifier from sklearn.neighbors import KNeighborsClassifier knn = KNeighborsClassifier(n_neighbors = 3)
# 训练模型knn.fit(train_X, train_y)
KNeighborsClassifier(algorithm=’auto’, leaf_size=30, metric=’minkowski’, metric_params=None, n_jobs=None, n_neighbors=3, p=2, weights=’uniform’)
import pickle
# 用Pickle保存模型saved_model = pickle.dumps(knn)
# 加载模型load_model = pickle.loads(saved_model)
# 预测load_model.predict(test_X)Jupyter:https://github.com/kunalj101/Data-Science-Hacks/blob/master/Code/Save_sklearn_model.ipynb结尾在本文中,我们介绍了七种有用的sklearn技巧以及各种sklearn模块和函数之间的技巧,以便你成为一名更好、更高效的数据科学家。我希望这些技巧将帮助你的日常任务,节省你的时间。原文链接:https://www.analyticsvidhya.com/blog/2020/05/7-scikit-learn-技巧s-tips-tricks/

文壹由“伴编辑器”提供技术支持
欢迎大家一起巩固机器学习算法基础。(添加微信:mthler,备注:sklearn学习,一起进【sklearn机器学习进步群】开启打怪升级的学习之旅。)

learn的用法相关文章

版权声明