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

  • 相关阅读:
    Power Apps-库组件样式调整
    计算机基础之计算机的发展历史
    java数据结构与算法刷题-----LeetCode35:搜索插入位置
    javaScript:DOM中的CSS操作
    Java ArrayList扩容机制
    算法补天系列之中级提高班1
    YOLO目标检测——红细胞数据集【(含对应voc、coco和yolo三种格式标签】
    (免费领源码)JAVA#springboot#MYSQL 社区医院病历管理平台11271-计算机毕业设计项目选题推荐
    Lnmp架构之Redis服务
    5V 全桥驱动芯片,大电流,具有 PWM(IN/IN)输入接口,可替代低压drv8837
  • 原文地址:https://blog.csdn.net/xianyinsuifeng/article/details/140316914