數據集是機器學習中最重要的組成部分之一,它是數據驅動的演算法的核心。數據集有很多種用法,下面我們將從多個方面對數據集如何使用做詳細闡述。
一、數據集的獲取
數據集是構建演算法模型的基礎,數據的質量直接影響著演算法模型的效果。所以,如何獲取高質量的數據集是非常重要的。
1、從公開數據平台獲取。目前有一些專門收集整理公開數據集的網站,如Kaggle、UCI等。
<img src="https://static.zio.ax/wp-content/uploads/2019/12/kaggle-logo.png" alt="kaggle" />
2、通過爬蟲從互聯網中抓取數據集。
# Python代碼示例
import requests
from bs4 import BeautifulSoup
url = "https://www.example.com"
html = requests.get(url).text
soup = BeautifulSoup(html, 'html.parser')
# 解析網頁,獲取數據集...
3、自己手動收集數據。
無論是自己手動收集數據,還是從公開數據平台或互聯網中抓取數據集,都需要注意數據集的質量問題。因為壞數據會使演算法模型產生誤差,影響最終結果。
二、數據集的預處理
對於獲取到的數據集,往往需要進行預處理。預處理的目的主要是為了清洗數據、去噪、歸一化等,以滿足演算法模型的要求。
1、數據清洗。對於經過採集後獲得的數據,往往會存在一些缺失、異常、重複等情況,此時需要對數據進行清洗。
# Python代碼示例
import pandas as pd
# 讀取csv格式的數據集
data = pd.read_csv('data.csv', sep=',')
# 刪除重複的行
data.drop_duplicates(inplace=True)
# 替換缺失值
data.fillna(value='unknown', inplace=True)
2、數據歸一化。對於不同類型的數據,需要對其進行歸一化處理。例如,將數值型數據歸一化到0-1之間。
# Python代碼示例
from sklearn import preprocessing
# 定義MinMaxScaler()實例
min_max_scaler = preprocessing.MinMaxScaler()
# 數據歸一化
data_normalized = min_max_scaler.fit_transform(data)
3、特徵編碼。對於數據中的類別型特徵,需要轉化成數字型特徵。例如,將性別從「男」、「女」轉換成「1」、「0」。
# Python代碼示例
import pandas as pd
# 讀取csv格式的數據集
data = pd.read_csv('data.csv', sep=',')
# 文本特徵編碼
for c in data.columns:
if data[c].dtype == 'object':
data[c] = pd.factorize(data[c])[0]
三、數據集的可視化
對於數據集,需要對其進行分析和可視化,以便更好地理解數據的分布、特徵等信息。
1、散點圖。散點圖是一種常用的數據可視化方法,可用於可視化兩個變數之間的關係。
# Python代碼示例
import matplotlib.pyplot as plt
# 構造散點圖
plt.scatter(x=data['x'], y=data['y'], s=data['size'], c=data['color'])
plt.show()
2、箱線圖。箱線圖可以用於顯示數據的中位數、四分位數、異常值等信息。
# Python代碼示例
import seaborn as sns
# 構造箱線圖
sns.boxplot(x=data['x'], y=data['group'], data=data)
plt.show()
3、核密度估計圖。核密度估計圖可以用於顯示數據的分布情況。
# Python代碼示例
import seaborn as sns
# 構造核密度估計圖
sns.kdeplot(data['x'], shade=True)
plt.show()
四、數據集的建模
對於準備好的數據集,可以開始構建演算法模型了。
1、劃分訓練集和測試集。在進行模型訓練之前,需要將數據集劃分成訓練集和測試集。
# Python代碼示例
from sklearn.model_selection import train_test_split
# 劃分訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
2、模型訓練。對於不同問題,需要選擇合適的演算法模型進行訓練。例如,對於分類問題可以使用邏輯回歸、決策樹、支持向量機等演算法模型。
# Python代碼示例
from sklearn.linear_model import LogisticRegression
# 定義邏輯回歸模型
lr = LogisticRegression()
# 模型訓練
lr.fit(X_train, y_train)
3、模型評估。在完成模型訓練之後,需要對模型進行評估,以檢查模型的性能。
# Python代碼示例
from sklearn.metrics import accuracy_score
# 預測測試集
y_pred = lr.predict(X_test)
# 計算準確率
accuracy_score(y_test, y_pred)
五、數據集的優化
對於模型訓練過程中出現的問題,可以對數據集做一些優化。
1、特徵選擇。對於有些無用特徵以及高相關特徵需要進行特徵選擇。
# Python代碼示例
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2
# 定義特徵選擇實例
selector = SelectKBest(chi2, k=3)
# 特徵選擇
selector.fit(X, y)
# 查看被選中的特徵
selector.get_support(indices=True)
2、參數調優。對於不同的演算法模型,有不同的超參數需要調整。對於決策樹,可以調整樹的最大深度、葉子節點最大樣本數等參數。
# Python代碼示例
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import GridSearchCV
# 定義決策樹模型
dtc = DecisionTreeClassifier()
# 定義參數網格
param_grid = {'max_depth': [5, 10, 15, 20],
'min_samples_leaf': [1, 2, 3]}
# 參數調優
grid = GridSearchCV(dtc, param_grid, cv=5)
grid.fit(X, y)
# 查看最佳參數
grid.best_params_
3、模型融合。在一些問題中,多個模型聯合起來可以得到更好的效果。
# Python代碼示例
from sklearn.ensemble import VotingClassifier
# 定義投票分類器
clf1 = LogisticRegression()
clf2 = DecisionTreeClassifier()
clf3 = KNeighborsClassifier(n_neighbors=7)
eclf = VotingClassifier(estimators=[('lr', clf1), ('dt', clf2), ('knn', clf3)], voting='hard')
# 模型融合
eclf.fit(X_train, y_train)
六、總結
本文從數據集的獲取、預處理、可視化、建模、優化等方面對數據集如何使用做了詳細闡述。數據集作為演算法模型的基礎和核心,為機器學習的發展提供了重要的支撐。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/233655.html