sklearn基础学习

avatar
作者
筋斗云
阅读量:0

1. 简介

1.1 什么是sklearn

sklearn,或者更正式地称为scikit-learn,是一个基于Python的开源机器学习库。它建立在NumPy、SciPy和matplotlib之上,提供了简单而有效的工具用于数据挖掘和数据分析。sklearn支持监督学习和无监督学习算法,包括分类、回归、聚类和降维等。

1.2 sklearn的主要功能

  • 数据预处理:提供标准化、归一化、填充缺失值等工具。
  • 特征选择与提取:支持PCA、LDA等降维技术,以及特征选择方法。
  • 模型选择与评估:提供交叉验证、网格搜索等模型选择和评估工具。
  • 监督学习:包括分类和回归算法,如SVM、决策树、随机森林、逻辑回归等。
  • 无监督学习:包括聚类、降维算法,如K-means、DBSCAN、t-SNE等。
  • 集成学习:支持Bagging、Boosting等方法,如AdaBoost、Gradient Boosting等。

2. 安装sklearn

你可以通过pip或conda来安装sklearn。以下是使用pip安装的命令:

pip install scikit-learn

如果你使用的是conda环境,可以使用以下命令:

conda install scikit-learn

3. 数据预处理

在使用sklearn进行机器学习之前,数据预处理是非常关键的一步。它包括数据清洗、特征缩放、特征编码等。

3.1 特征缩放

特征缩放可以帮助提升机器学习算法的性能和稳定性。sklearn提供了多种特征缩放工具:

  • StandardScaler:用于特征的标准化,即将特征值缩放到均值为0,方差为1的分布。
  • MinMaxScaler:将特征数据缩放到一个指定的范围(通常是0到1)。
  • MaxAbsScaler:将每个特征缩放到[-1, 1]的范围内,通过除以每个特征的最大绝对值来实现。
  • RobustScaler:使用中位数和四分位数范围(IQR)来缩放特征,对有许多离群点的数据集特别有用。
  • Normalizer:将每个样本缩放到单位范数,即使得每个样本的L1或L2范数为1。

3.2 数据清洗

数据清洗包括处理缺失值、异常值、重复值等。sklearn提供了SimpleImputer来处理缺失值,可以选择用平均值、中位数或众数填充。

3.3 编码分类特征

对于分类数据,需要将其转换为机器学习模型可以理解的数值形式。sklearn提供了LabelEncoder(用于单个分类特征)和OneHotEncoder(用于多个分类特征)等工具来实现这一功能。

4. 加载数据集

sklearn自带了一些用于示例和测试的数据集,如鸢尾花数据集(Iris dataset)、波士顿房价数据集(Boston housing dataset)等。以下是如何加载鸢尾花数据集的示例:

from sklearn.datasets import load_iris
iris = load_iris()
X = iris.data # 特征数据
y = iris.target # 目标标签

5. 划分数据集

在训练模型之前,通常需要将数据集划分为训练集和测试集。sklearn提供了train_test_split函数来实现这一功能:

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

6. 训练模型

sklearn提供了多种内置的机器学习算法。以下是如何使用逻辑回归算法训练模型的示例:

from sklearn.linear_model import LogisticRegression
model = LogisticRegression()
model.fit(X_train, y_train)

7. 模型评估

训练好模型后,我们需要评估其在测试集上的性能。sklearn提供了各种评估指标,如准确率、精确率、召回率、F1分数等。以下是如何计算模型准确率的示例:

from sklearn.metrics import accuracy_score
y_pred = model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)

8. 交叉验证

为了更准确地评估模型的性能,可以使用交叉验证(Cross-Validation)。sklearn提供了cross_val_score函数来实现这一功能:

from sklearn.model_selection import cross_val_score
scores = cross_val_score(model, X_train, y_train, cv=5

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!