一、Scikit-learn简介与安装
Scikit-learn是Python中最流行的机器学习库之一,它提供了简单高效的数据挖掘和数据分析工具。
-
Python语言机器学习工具
-
Scikit-learn包括许多智能的机器学习算法的实现
-
Scikit-learn文档完善,容易上手,丰富的API接口函数
-
Scikit-learn官网:scikit-learn: machine learning in Python — scikit-learn 1.6.1 documentation
-
Scikit-learn中文文档:sklearn
-
scikit-learn中文社区
1. Scikit-learn安装
# 使用pip安装scikit-learn
# pip install scikit-learn
# pip install -i https://pypi.tuna.tsinghua.edu.cn/simple scikit-learn# 或者使用conda安装
# conda install scikit-learn# 验证安装是否成功
import sklearn
print("Scikit-learn版本:", sklearn.__version__)
2. Scikit-learn包含的内容
Scikit-learn主要包含以下功能模块:
-
分类(Classification)
-
回归(Regression)
-
聚类(Clustering)
-
降低降维(Dimensionality reduction)
-
模型选择(Model selection)
-
预处理(Preprocessing)
二、数据集使用
1. sklearn玩具数据集介绍
Scikit-learn内置了一些小型标准数据集,数据量小,只要安装了sklearn就可以使用,非常适合学习和测试算法。
from sklearn import datasets# 列出所有可用的玩具数据集
print("可用玩具数据集:", datasets.__all__)
2. sklearn现实世界数据集介绍
除了玩具数据集,scikit-learn还提供了一些更大的现实世界数据集,数据量大,数据只能通过网络获取 。
3. sklearn加载玩具数据集
示例1:鸢尾花数据
from sklearn.datasets import load_iris
# 加载鸢尾花数据集
iris = load_iris() # 返回一个Bunch对象# iris字典中有几个重要属性:
# data 特征
# feature_names 特征描述
# target 目标
# target_names 目标描述
# DESCR 数据集的描述
# filename 下后到本地保存后的文件名
# 它们可以通过 数据集.属性 的方式访问# 查看数据集描述
print(iris.DESCR)# 特征数据 (150个样本,4个特征)
print("特征数据形状:", iris.data.shape)# 目标变量 (3类鸢尾花)
print("目标变量:", iris.target_names)# 下面使用pandas把特征和目标一起显示出来# 将数据转换为DataFrame (需要pandas)
import pandas as pd
import numpy as np
# iris = load_iris()
feature = iris.data
target = iris.target
target.shape=(len(target), 1)
data = np.hstack([feature, target])
cols = iris.feature_names
cols.append("target")
pd.DataFrame(data,columns=cols)
示例2:分析糖尿病数据集
from sklearn.datasets import load_iris
# 加载糖尿病数据集
diabetes = load_diabetes()# 查看数据集描述
print(diabetes.DESCR)# 特征数据 (442个样本,10个特征)
print("特征数据形状:", diabetes.data.shape)# 目标变量 (一年后疾病进展的定量测量)
print("目标变量范围:", min(diabetes.target), "到", max(diabetes.target))# 可视化第一个特征与目标变量的关系
import matplotlib.pyplot as plt
plt.scatter(diabetes.data[:, 0], diabetes.target)
plt.xlabel('年龄(标准化)')
plt.ylabel('疾病进展')
plt.title('年龄与糖尿病进展关系')
plt.show()
4. sklearn获取现实世界数据集
示例3:获取20分类新闻数据
# 针对下载不成功的可能是版本问题的解决方式
# 加载互联网数据集
# pip install --upgrade scikit-learn 库更新import sklearn.datasets as datasets
from sklearn.datasets import fetch_20newsgroups, fetch_california_housing
path = datasets.get_data_home() # 获取数据集的默认路径
print(path)# news = fetch_20newsgroups(data_home="./src",subset="all") # 加载所有数据集 train:训练集 / test:测试集
# print(len(news.data)) # 18846
# print(type(news.data)) # <class 'list'>
# print(news.data[:5]) # 文本数据
# print(news.target_names) # 20个类别data,target = fetch_20newsgroups(data_home="./src",subset="all",return_X_y=True)
print(data[:5],target[:5]) # 文本数据
5. 读取本地csv数据(借用pandas读取)
(1) 创建csv文件
# 创建一个简单的csv文件
import csvdata = [['姓名', '年龄', '城市'],['张三', 25, '北京'],['李四', 30, '上海'],['王五', 35, '广州']
]with open('sample_data.csv', 'w', newline='', encoding='utf-8') as f:writer = csv.writer(f)writer.writerows(data)
(2) pandas加载csv
# 使用pandas加载csv文件
import pandas as pd# 读取csv文件
df = pd.read_csv('sample_data.csv')# 查看数据
print("数据概览:")
print(df.head())# 基本统计信息
print("\n基本统计信息:")
print(df.describe())# 可视化
df.plot(kind='bar', x='姓名', y='年龄')
plt.title('年龄分布')
plt.show()
三、总结
本文介绍了scikit-learn的基本安装、包含的内容,以及如何使用内置数据集和本地csv数据进行机器学习分析。通过示例代码展示了如何加载和处理不同类型的数据集,为后续的机器学习建模打下基础。
在实际应用中,理解数据是机器学习项目成功的关键第一步。scikit-learn提供的数据集接口和pandas的数据处理能力可以帮助我们快速开始数据分析工作。