当前位置: 首页 > news >正文

初见scikit-learn之基础教程

初见scikit-learn之基础教程

      • scikit-learn 基础教程
    • 1. scikit-learn 简介
      • 1.1 什么是 scikit-learn?
      • 1.2 scikit-learn 的主要功能
    • 2. 安装 scikit-learn
      • 2.1 安装方法
      • 2.2 验证安装
    • 3. scikit-learn 基本使用
      • 3.1 数据加载与预处理
        • 3.1.1 加载数据集
        • 3.1.2 数据拆分
        • 3.1.3 数据标准化
      • 3.2 分类模型
        • 3.2.1 逻辑回归
        • 3.2.2 决策树
      • 3.3 回归模型
        • 3.3.1 线性回归
      • 3.4 聚类模型
        • 3.4.1 K-Means 聚类
      • 3.5 降维
        • 3.5.1 主成分分析(PCA)
      • 3.6 模型选择与评估
        • 3.6.1 交叉验证
        • 3.6.2 网格搜索
    • 4. 实战案例
      • 4.1 房价预测
        • 4.1.1 数据准备
        • 4.1.2 数据预处理
        • 4.1.3 模型训练与评估
      • 4.2 客户细分
        • 4.2.1 数据准备
        • 4.2.2 K-Means 聚类
        • 4.2.3 可视化
    • 5. 总结

scikit-learn 基础教程

scikit-learn 是一个广泛使用的 Python 机器学习库,提供了简单而高效的工具来进行数据挖掘和数据分析。它涵盖了数据预处理、特征选择、模型训练和评估等多个方面。本文将详细介绍 scikit-learn 的基础知识,包括基本概念、常用模块和功能、以及实际应用示例。


1. scikit-learn 简介

1.1 什么是 scikit-learn?

scikit-learn 是一个开源的 Python 库,用于机器学习和数据挖掘。它提供了一系列简单而高效的工具来处理数据预处理、特征选择、模型训练和评估等任务。scikit-learn 构建于 NumPy、SciPy 和 matplotlib 之上,并且符合 SciPy 生态系统的设计原则。

1.2 scikit-learn 的主要功能

  • 分类:用于将数据分为不同的类别(例如,垃圾邮件分类)。
  • 回归:预测连续的数值(例如,房价预测)。
  • 聚类:将数据分组为不同的簇(例如,客户细分)。
  • 降维:减少数据的维度(例如,PCA)。
  • 模型选择:选择和评估模型(例如,交叉验证)。
  • 数据预处理:数据清理和特征工程(例如,标准化、归一化)。

2. 安装 scikit-learn

2.1 安装方法

可以使用 pip 来安装 scikit-learn:

pip install scikit-learn

或者,使用 conda 安装:

conda install scikit-learn

2.2 验证安装

安装完成后,可以通过以下代码验证 scikit-learn 是否安装成功:

import sklearn
print(sklearn.__version__)

3. scikit-learn 基本使用

3.1 数据加载与预处理

3.1.1 加载数据集

scikit-learn 提供了一些内置的数据集,例如鸢尾花数据集(Iris Dataset):

from sklearn.datasets import load_iris# 加载鸢尾花数据集
data = load_iris()
X = data.data
y = data.target
3.1.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.3, random_state=42)
3.1.3 数据标准化

标准化数据,使其均值为 0,方差为 1:

from sklearn.preprocessing import StandardScalerscaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)

3.2 分类模型

3.2.1 逻辑回归

逻辑回归是一种线性分类算法:

from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score# 创建逻辑回归模型
model = LogisticRegression()
model.fit(X_train_scaled, y_train)# 预测
y_pred = model.predict(X_test_scaled)# 评估模型
accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy:.2f}')
3.2.2 决策树

决策树是一种基于树结构的分类方法:

from sklearn.tree import DecisionTreeClassifier# 创建决策树模型
model = DecisionTreeClassifier()
model.fit(X_train, y_train)# 预测
y_pred = model.predict(X_test)# 评估模型
accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy:.2f}')

3.3 回归模型

3.3.1 线性回归

线性回归用于预测连续变量:

from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error# 创建线性回归模型
model = LinearRegression()
model.fit(X_train, y_train)# 预测
y_pred = model.predict(X_test)# 评估模型
mse = mean_squared_error(y_test, y_pred)
print(f'Mean Squared Error: {mse:.2f}')

3.4 聚类模型

3.4.1 K-Means 聚类

K-Means 是一种常用的聚类算法:

from sklearn.cluster import KMeans
import matplotlib.pyplot as plt# 创建 K-Means 模型
model = KMeans(n_clusters=3, random_state=42)
model.fit(X)# 获取聚类结果
labels = model.predict(X)# 可视化聚类结果
plt.scatter(X[:, 0], X[:, 1], c=labels, cmap='viridis')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.title('K-Means Clustering')
plt.show()

3.5 降维

3.5.1 主成分分析(PCA)

PCA 用于减少数据维度:

from sklearn.decomposition import PCA# 创建 PCA 模型
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X)# 可视化降维后的数据
plt.scatter(X_pca[:, 0], X_pca[:, 1], c=y, cmap='viridis')
plt.xlabel('Principal Component 1')
plt.ylabel('Principal Component 2')
plt.title('PCA of Iris Dataset')
plt.show()

3.6 模型选择与评估

3.6.1 交叉验证

交叉验证用于评估模型的性能:

from sklearn.model_selection import cross_val_score# 创建模型
model = LogisticRegression()# 进行交叉验证
scores = cross_val_score(model, X, y, cv=5)print(f'Cross-Validation Scores: {scores}')
print(f'Mean Score: {scores.mean():.2f}')
3.6.2 网格搜索

网格搜索用于调整模型的超参数:

from sklearn.model_selection import GridSearchCV# 创建模型
model = LogisticRegression()# 定义参数范围
param_grid = {'C': [0.1, 1, 10],'penalty': ['l1', 'l2']
}# 创建网格搜索
grid_search = GridSearchCV(model, param_grid, cv=5)# 训练网格搜索
grid_search.fit(X_train_scaled, y_train)# 输出最佳参数
print(f'Best Parameters: {grid_search.best_params_}')
print(f'Best Score: {grid_search.best_score_:.2f}')

4. 实战案例

4.1 房价预测

4.1.1 数据准备

假设我们有一个房价数据集,包含房屋的各种特征和价格:

import pandas as pd# 读取数据集
data = pd.read_csv('house_prices.csv')# 特征选择和标签
X = data[['num_rooms', 'size', 'location']]
y = data['price']
4.1.2 数据预处理

对数据进行预处理和标准化:

from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split# 数据拆分
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)# 标准化数据
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
4.1.3 模型训练与评估

使用线性回归模型进行训练和评估:

from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error# 创建模型
model = LinearRegression()
model.fit(X_train_scaled, y_train)# 预测
y_pred = model.predict(X_test_scaled)# 评估模型
mse = mean_squared_error(y_test, y_pred)
print(f'Mean Squared Error: {mse:.2f}')

4.2 客户细分

4.2.1 数据准备

假设我们有一个客户数据集,包含客户的特征信息:

# 读取数据集
data = pd.read_csv('customer_data.csv')# 特征选择
X = data[['age', 'income', 'spending_score']]
4.2.2 K-Means 聚类

使用 K-Means 聚类进行客户细分:

from sklearn.cluster import KMeans# 创建 K-Means 模型
model = KMeans(n_clusters=4, random_state=42)
model.fit(X)# 获取聚类结果
labels = model.predict(X)# 添加聚类标签到数据中
data['cluster'] = labels
4.2.3 可视化

可视化客户聚类结果:

import matplotlib.pyplot as plt# 可视化聚类结果
plt.scatter(data['age'], data['income'], c=labels, cmap='viridis')
plt.xlabel('Age')
plt.ylabel('Income')
plt.title('Customer Clustering')
plt.show()

5. 总结

scikit-learn 是一个功能强大的机器学习库,提供了丰富的工具和功能来处理各种数据分析任务。这里我嫩介绍了 scikit-learn 的基础知识,包括数据加载与预处理、分类与回归模型、聚类与降维技术、模型选择与评估等内容。scikit-learn 官方文档


相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • langchain调用讯飞星火大模型3.5和4
  • C++入门 | auto关键字、范围for、指针空值nullptr
  • dynamic-datasource+Mybatis多数据源使用
  • ctfhub Bypass disable_function
  • 论文辅导 | 基于概率密度估计与时序Transformer网络的风功率日前区间预测
  • 测试总结8/6
  • 08.SQL注入-下(超详细!!!)
  • 如何在SQLite中实现自动时间戳
  • 【C++ | 泛型编程】C++函数模板详解(定义、使用、特化、重载)
  • 工具学习_CONAN_Consuming Packages
  • 如何在 Debian 上安装运行极狐GitLab Runner?【一】
  • Hadoop入门:构建你的第一个大数据处理平台
  • Spring Boot 使用多线程完成 统计当日用户所属区域
  • 选电脑——电脑配置
  • ViP-LLaVA: Making Large Multimodal Models Understand Arbitrary Visual Prompts
  • [ JavaScript ] 数据结构与算法 —— 链表
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • Hibernate最全面试题
  • JavaScript 一些 DOM 的知识点
  • javascript面向对象之创建对象
  • Javascript设计模式学习之Observer(观察者)模式
  • JavaScript设计模式与开发实践系列之策略模式
  • Object.assign方法不能实现深复制
  • Octave 入门
  • scala基础语法(二)
  • 回顾2016
  • 机器学习学习笔记一
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 前端_面试
  • ‌前端列表展示1000条大量数据时,后端通常需要进行一定的处理。‌
  • !!java web学习笔记(一到五)
  • # AI产品经理的自我修养:既懂用户,更懂技术!
  • # centos7下FFmpeg环境部署记录
  • # Maven错误Error executing Maven
  • #1015 : KMP算法
  • #VERDI# 关于如何查看FSM状态机的方法
  • (16)Reactor的测试——响应式Spring的道法术器
  • (3)医疗图像处理:MRI磁共振成像-快速采集--(杨正汉)
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (笔试题)分解质因式
  • (动态规划)5. 最长回文子串 java解决
  • (二)Eureka服务搭建,服务注册,服务发现
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (机器学习的矩阵)(向量、矩阵与多元线性回归)
  • (六)c52学习之旅-独立按键
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • (五)Python 垃圾回收机制
  • .Net Framework 4.x 程序到底运行在哪个 CLR 版本之上
  • .Net Remoting常用部署结构
  • .NET 实现 NTFS 文件系统的硬链接 mklink /J(Junction)
  • .NET 中 GetProcess 相关方法的性能
  • .Net中的设计模式——Factory Method模式
  • .net专家(高海东的专栏)
  • @selector(..)警告提示