🎬 HoRain云小助手个人主页

 🔥 个人专栏: 《Linux 系列教程》《c语言教程

⛺️生活的理想,就是为了理想的生活!


⛳️ 推荐

前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。

专栏介绍

专栏名称

专栏介绍

《C语言》

本专栏主要撰写C干货内容和编程技巧,让大家从底层了解C,把更多的知识由抽象到简单通俗易懂。

《网络协议》

本专栏主要是注重从底层来给大家一步步剖析网络协议的奥秘,一起解密网络协议在运行中协议的基本运行机制!

《docker容器精解篇》

全面深入解析 docker 容器,从基础到进阶,涵盖原理、操作、实践案例,助您精通 docker。

《linux系列》

本专栏主要撰写Linux干货内容,从基础到进阶,知识由抽象到简单通俗易懂,帮你从新手小白到扫地僧。

《python 系列》

本专栏着重撰写Python相关的干货内容与编程技巧,助力大家从底层去认识Python,将更多复杂的知识由抽象转化为简单易懂的内容。

《试题库》

本专栏主要是发布一些考试和练习题库(涵盖软考、HCIE、HRCE、CCNA等)

目录

⛳️ 推荐

专栏介绍

1. 分类案例:鸢尾花分类

2. 回归案例:房价预测

3. 降维案例:PCA与NMF的应用

4. 模型评估与调优案例

总结


img

Scikit-learn(Sklearn)是 Python 中一个功能强大且易于使用的开源机器学习库,它提供了各种监督和无监督学习算法,涵盖了分类、回归、聚类、降维、模型选择和预处理等多个方面。以下是一些典型的 Sklearn 应用案例,涵盖了不同任务类型和数据集。

1. 分类案例:鸢尾花分类

鸢尾花数据集(Iris dataset)是机器学习中最经典的入门数据集之一,包含了三种鸢尾花(Setosa、Versicolor、Virginica)的4个特征(花萼长度、花萼宽度、花瓣长度和花瓣宽度)。

​实现步骤:​

  1. ​数据加载与探索​​:

    from sklearn.datasets import load_iris
    import pandas as pd
    
    # 加载数据
    iris = load_iris()
    df = pd.DataFrame(iris.data, columns=iris.feature_names)
    df['target'] = iris.target
    df['species'] = df['target'].apply(lambda x: iris.target_names[x])
    print(df.head())
  2. ​数据可视化​​:
    使用 seabornmatplotlib 绘制特征关系图。

    import seaborn as sns
    import matplotlib.pyplot as plt
    
    sns.pairplot(df, hue='species')
    plt.show()
  3. ​数据预处理​​:
    特征标准化。

    from sklearn.preprocessing import StandardScaler
    
    X = df.drop(columns=['target', 'species'])
    y = df['target']
    scaler = StandardScaler()
    X_scaled = scaler.fit_transform(X)
  4. ​划分训练集和测试集​​:

    from sklearn.model_selection import train_test_split
    
    X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.2, random_state=42)
  5. ​模型训练与评估​​:

    • ​决策树​​:
      from sklearn.tree import DecisionTreeClassifier
      from sklearn.metrics import accuracy_score
      
      model_dt = DecisionTreeClassifier(random_state=42)
      model_dt.fit(X_train, y_train)
      y_pred_dt = model_dt.predict(X_test)
      accuracy_dt = accuracy_score(y_test, y_pred_dt)
      print(f"Decision Tree Accuracy: {accuracy_dt:.4f}")
    • ​支持向量机(SVM)​​:
      from sklearn.svm import SVC
      
      model_svm = SVC(kernel='linear', random_state=42)
      model_svm.fit(X_train, y_train)
      y_pred_svm = model_svm.predict(X_test)
      accuracy_svm = accuracy_score(y_test, y_pred_svm)
      print(f"SVM Accuracy: {accuracy_svm:.4f}")
    • ​K近邻(KNN)​​:
      from sklearn.neighbors import KNeighborsClassifier
      
      knn = KNeighborsClassifier(n_neighbors=1)
      knn.fit(X_train, y_train)
      y_pred = knn.predict(X_test)
      print("Test set accuracy: {:.2f}".format(knn.score(X_test, y_test)))
  6. ​模型优化​​:
    使用网格搜索进行超参数调优。

    from sklearn.model_selection import GridSearchCV
    
    param_grid = {'max_depth': [3, 5, 10, None], 'min_samples_split': [2, 5, 10], 'min_samples_leaf': [1, 2, 4]}
    grid_search = GridSearchCV(estimator=DecisionTreeClassifier(random_state=42), param_grid=param_grid, cv=5)
    grid_search.fit(X_train, y_train)
    best_model = grid_search.best_estimator_

2. 回归案例:房价预测

以波士顿房价数据集或北京链家租房数据集为例,预测房屋租金或房价。

​实现步骤(以北京房价为例):​

  1. ​数据加载与预处理​​:

    import pandas as pd
    from sklearn.preprocessing import LabelEncoder, StandardScaler
    
    # 读取数据
    data = pd.read_csv('newbj_lianJia.csv')
    # 处理非数值特征(如户型、朝向、城区等),常用LabelEncoder或OneHotEncoder
    le = LabelEncoder()
    data['district_encoded'] = le.fit_transform(data['district'])
    # ... 类似处理其他分类特征
    # 特征选择(如选择与租金相关性高的特征)
    X = data[['area']]  # 以面积为例
    y = data['rent']
  2. ​数据划分与标准化​​:

    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)
    scaler = StandardScaler()
    X_train_scaled = scaler.fit_transform(X_train)
    X_test_scaled = scaler.transform(X_test)
  3. ​模型训练与预测​​:

    from sklearn.linear_model import LinearRegression
    from sklearn.metrics import mean_squared_error, r2_score
    
    model = LinearRegression()
    model.fit(X_train_scaled, y_train)
    y_pred = model.predict(X_test_scaled)
    print("Coefficients: ", model.coef_)
    print("Mean squared error: %.2f" % mean_squared_error(y_test, y_pred))
    print("Coefficient of determination (R^2): %.2f" % r2_score(y_test, y_pred))

3. 降维案例:PCA与NMF的应用

降维用于减少特征数量,剔除噪音,加速训练或可视化。

​PCA用于鸢尾花数据降维与可视化​​:

from sklearn.decomposition import PCA
import matplotlib.pyplot as plt

pca = PCA(n_components=2)
X_pca = pca.fit_transform(X_scaled)  # X_scaled 是标准化后的特征
plt.scatter(X_pca[:, 0], X_pca[:, 1], c=y, cmap='viridis')
plt.xlabel('First Principal Component')
plt.ylabel('Second Principal Component')
plt.show()

​PCA用于噪声过滤​​:

# 假设 X 是带噪声的数据
pca = PCA(n_components=0.95)  # 保留95%的方差
X_reduced = pca.fit_transform(X)
X_filtered = pca.inverse_transform(X_reduced)  # 重构数据,噪声被过滤

​NMF用于高光谱遥感数据分解​​:

from sklearn.decomposition import NMF
from sklearn.preprocessing import MinMaxScaler

# 数据需为非负
scaler = MinMaxScaler()
X_scaled_nonneg = scaler.fit_transform(X)
nmf = NMF(n_components=2, init='nndsvda', random_state=42)
W = nmf.fit_transform(X_scaled_nonneg)
H = nmf.components_
# W 和 H 可以用于解释数据的潜在结构

4. 模型评估与调优案例

使用交叉验证和网格搜索优化模型参数。

​以SVM为例的网格搜索​​:

from sklearn.svm import SVC
from sklearn.model_selection import GridSearchCV

param_grid = {'C': [0.1, 1, 10, 100], 'gamma': [1, 0.1, 0.01, 0.001], 'kernel': ['rbf', 'linear']}
grid = GridSearchCV(SVC(), param_grid, refit=True, verbose=2, cv=5)
grid.fit(X_train, y_train)
print(grid.best_params_)
best_model = grid.best_estimator_

总结

Scikit-learn 提供了简洁一致的 API,使得实现机器学习流程(数据预处理、模型训练、评估、调优)变得非常高效。上述案例展示了 Sklearn 在分类、回归、降维等常见任务中的应用。对于更复杂的问题,可以尝试集成方法(如随机森林、梯度提升)或深度学习框架,但 Sklearn 依然是快速原型开发和理解机器学习概念的宝贵工具。

实践中,建议始终进行数据探索和可视化,理解数据特性后再选择模型,并利用交叉验证和网格搜索来优化性能,避免过拟合。

❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐