一、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的數據處理能力可以幫助我們快速開始數據分析工作。
?
?
?
?