sklearn 基础教程

Scikit-learn 是一个用于机器学习的 Python 库,它提供了简单而高效的工具来进行数据挖掘和数据分析。以下是 Scikit-learn 的基础教程,包括安装、基本操作和一些常见的机器学习任务。

安装 Scikit-learn

在安装 Scikit-learn 之前,需要确保已经安装了 Python 和 pip。然后,可以通过以下命令安装 Scikit-learn:

pip install scikit-learn
导入 Scikit-learn

在使用 Scikit-learn 之前,需要导入相应的模块:

import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, accuracy_score
数据准备

在进行机器学习任务之前,首先需要准备数据。以下是使用 Pandas 导入和处理数据的示例:

# 使用 Pandas 导入数据
data = pd.read_csv('data.csv')

# 查看数据集的信息
print(data.head())
print(data.info())

# 分割特征和标签
X = data.iloc[:, :-1].values  # 特征
y = data.iloc[:, -1].values   # 标签
数据分割

将数据分割为训练集和测试集:

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
数据预处理

标准化特征:

scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
模型训练与预测

以下是训练线性回归模型的示例:

# 创建线性回归模型
model = LinearRegression()

# 训练模型
model.fit(X_train, y_train)

# 预测
y_pred = model.predict(X_test)
评估模型

使用均方误差(MSE)评估线性回归模型:

mse = mean_squared_error(y_test, y_pred)
print(f'Mean Squared Error: {mse}')

如果是分类任务,可以使用准确率评估:

accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy}')

深入 Scikit-learn

数据预处理

Scikit-learn 提供了多种数据预处理的方法,包括特征缩放、编码和缺失值处理等。

特征缩放

使用 StandardScaler 进行标准化:

from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
编码分类特征

使用 LabelEncoder 或 OneHotEncoder 进行编码:

from sklearn.preprocessing import LabelEncoder, OneHotEncoder

# Label Encoding
label_encoder = LabelEncoder()
y_encoded = label_encoder.fit_transform(y)

# One-Hot Encoding
one_hot_encoder = OneHotEncoder()
X_encoded = one_hot_encoder.fit_transform(X_categorical)
处理缺失值

使用 SimpleImputer 填充缺失值:

from sklearn.impute import SimpleImputer

imputer = SimpleImputer(strategy='mean')
X_imputed = imputer.fit_transform(X)
模型选择

Scikit-learn 提供了多种模型,包括线性模型、决策树、支持向量机、集成模型等。

线性模型
from sklearn.linear_model import LinearRegression, LogisticRegression

# 线性回归
lin_reg = LinearRegression()
lin_reg.fit(X_train, y_train)

# 逻辑回归
log_reg = LogisticRegression()
log_reg.fit(X_train, y_train)
决策树
from sklearn.tree import DecisionTreeClassifier, DecisionTreeRegressor

# 决策树分类
tree_clf = DecisionTreeClassifier()
tree_clf.fit(X_train, y_train)

# 决策树回归
tree_reg = DecisionTreeRegressor()
tree_reg.fit(X_train, y_train)
支持向量机
from sklearn.svm import SVC, SVR

# 支持向量分类
svc = SVC()
svc.fit(X_train, y_train)

# 支持向量回归
svr = SVR()
svr.fit(X_train, y_train)
集成模型
from sklearn.ensemble import RandomForestClassifier, RandomForestRegressor, GradientBoostingClassifier, GradientBoostingRegressor

# 随机森林分类
rf_clf = RandomForestClassifier()
rf_clf.fit(X_train, y_train)

# 随机森林回归
rf_reg = RandomForestRegressor()
rf_reg.fit(X_train, y_train)

# 梯度提升分类
gb_clf = GradientBoostingClassifier()
gb_clf.fit(X_train, y_train)

# 梯度提升回归
gb_reg = GradientBoostingRegressor()
gb_reg.fit(X_train, y_train)
模型评估

Scikit-learn 提供了多种评估指标和方法,包括交叉验证、网格搜索等。

交叉验证

使用 cross_val_score 进行交叉验证:

from sklearn.model_selection import cross_val_score

scores = cross_val_score(model, X, y, cv=5)
print(f'Cross-Validation Scores: {scores}')
print(f'Mean Score: {scores.mean()}')
网格搜索

使用 GridSearchCV 进行超参数调优:

from sklearn.model_selection import GridSearchCV

param_grid = {
    'n_estimators': [50, 100, 200],
    'max_depth': [None, 10, 20, 30]
}

grid_search = GridSearchCV(RandomForestClassifier(), param_grid, cv=5)
grid_search.fit(X_train, y_train)

print(f'Best Parameters: {grid_search.best_params_}')
print(f'Best Score: {grid_search.best_score_}')

总结

Scikit-learn 是一个功能强大的机器学习库,提供了丰富的工具和模块来处理数据预处理、模型训练、评估和调优等任务。通过本教程的学习,希望你能掌握 Scikit-learn 的基本使用方法,并能够在实际项目中应用。

上一篇:【Python实战因果推断】36_双重差分7


下一篇:sqlalchemy通过查询参数生成query