• 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 的基本使用方法,并能够在实际项目中应用。

  • 相关阅读:
    exness:流动性系列-流动性清洗和反转、决策区间
    C Primer Plus(6) 中文版 第5章 运算符、表达式和语句 5.6 带参数的函数
    Bridge 模式
    hdu 1052(田忌赛马 贪心算法,sort排序)
    【深度学习理论】(6) 循环神经网络 RNN
    你知道在游戏开发中怎么将算法与其作用的对象隔离开来吗?
    vue项目 自己封装的组件没有发布npm如何在其他项目使用及组件如何注册
    vertx hello gradle 打包jar
    一文搞懂│php 中的 DI 依赖注入
    efcore如何优雅的实现按年分库按月分表
  • 原文地址:https://blog.csdn.net/xianyinsuifeng/article/details/140316914