Scikit-learn是一个基于Python的开源机器学习库,广泛用于数据挖掘和数据分析。以下是一些Scikit-learn中常用知识点的代码演示:

1. 导入库和准备数据

# 导入所需的库
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
# 加载数据集,这里以鸢尾花数据集为例
iris = datasets.load_iris()
X = iris.data  # 特征
y = iris.target  # 标签

# 划分训练集和测试集
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)

2. 线性回归

from sklearn.linear_model import LinearRegression

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

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

# 预测
y_pred = lr.predict(X_test)

# 评估模型
from sklearn.metrics import mean_squared_error
print("Mean Squared Error:", mean_squared_error(y_test, y_pred))

3. 逻辑回归

from sklearn.linear_model import LogisticRegression

# 创建逻辑回归模型
log_reg = LogisticRegression()

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

# 预测
y_pred = log_reg.predict(X_test)

# 评估模型
from sklearn.metrics import accuracy_score
print("Accuracy:", accuracy_score(y_test, y_pred))

4. 决策树

from sklearn.tree import DecisionTreeClassifier

# 创建决策树分类器
dt = DecisionTreeClassifier()

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

# 预测
y_pred = dt.predict(X_test)

# 评估模型
print("Accuracy:", accuracy_score(y_test, y_pred))

5. 随机森林

from sklearn.ensemble import RandomForestClassifier

# 创建随机森林分类器
rf = RandomForestClassifier(n_estimators=100)

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

# 预测
y_pred = rf.predict(X_test)

# 评估模型
print("Accuracy:", accuracy_score(y_test, y_pred))

6. 支持向量机(SVM)

from sklearn.svm import SVC

# 创建SVM分类器
svm = SVC()

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

# 预测
y_pred = svm.predict(X_test)

# 评估模型
print("Accuracy:", accuracy_score(y_test, y_pred))

7. K-近邻(KNN)

from sklearn.neighbors import KNeighborsClassifier

# 创建KNN分类器
knn = KNeighborsClassifier(n_neighbors=5)

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

# 预测
y_pred = knn.predict(X_test)

# 评估模型
print("Accuracy:", accuracy_score(y_test, y_pred))

8. 模型持久化

import joblib

# 保存模型
joblib.dump(lr, 'linear_regression_model.pkl')

# 加载模型
loaded_lr_model = joblib.load('linear_regression_model.pkl')

# 使用加载的模型进行预测
loaded_y_pred = loaded_lr_model.predict(X_test)

这些示例涵盖了Scikit-learn中的一些基本概念和常用算法。

在机器学习项目中,特征工程、参数调优和模型评估是提高模型性能的关键步骤。以下是一些示例代码,展示如何使用Scikit-learn进行这些步骤:

特征工程

特征工程包括特征选择、特征提取和特征转换等操作。

特征选择

使用SelectKBest进行特征选择:

from sklearn.feature_selection import SelectKBest, f_classif

# 选择最好的k个特征
k = 4  # 例如选择4个特征
selector = SelectKBest(f_classif, k=k)
X_train_selected = selector.fit_transform(X_train, y_train)
X_test_selected = selector.transform(X_test)

特征提取

使用PCA进行主成分分析:

from sklearn.decomposition import PCA

# 降维到2个主成分
pca = PCA(n_components=2)
X_train_pca = pca.fit_transform(X_train)
X_test_pca = pca.transform(X_test)

参数调优

使用GridSearchCV或RandomizedSearchCV进行参数调优:

from sklearn.model_selection import GridSearchCV
from sklearn.ensemble import RandomForestClassifier

# 定义参数网格
param_grid = {
    'n_estimators': [100, 200, 300],
    'max_depth': [None, 10, 20],
    'min_samples_split': [2, 5, 10]
}

# 创建随机森林分类器
rf = RandomForestClassifier()

# 创建GridSearchCV对象
grid_search = GridSearchCV(estimator=rf, param_grid=param_grid, cv=5, n_jobs=-1)

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

# 打印最佳参数
print("Best parameters:", grid_search.best_params_)

模型评估

使用交叉验证和不同的评估指标来评估模型性能:

from sklearn.model_selection import cross_val_score
from sklearn.metrics import classification_report, confusion_matrix

# 使用交叉验证评估模型
scores = cross_val_score(rf, X_train, y_train, cv=5)
print("Accuracy scores:", scores)
print("Mean accuracy:", scores.mean())

# 使用最佳参数训练模型
best_rf = grid_search.best_estimator_

# 训练和预测
best_rf.fit(X_train, y_train)
y_pred = best_rf.predict(X_test)

# 打印分类报告
print(classification_report(y_test, y_pred))

# 打印混淆矩阵
print(confusion_matrix(y_test, y_pred))

这些代码示例展示了如何进行特征工程、参数调优和模型评估。在实际应用中,你可能需要根据具体问题和数据集调整这些步骤和参数。此外,还有许多其他的特征工程方法和模型评估技术,可以根据需要选择使用。