一、機器學習基礎概念
機器學習是人工智慧領域的一個重要分支,目的是讓計算機自動學習數據中的規律,從而進行預測和決策。在機器學習中,通常會將數據分為訓練集和測試集,在訓練集上訓練模型,然後在測試集上評估模型的性能。常見的機器學習演算法包括決策樹、支持向量機、樸素貝葉斯等。
二、sklearn簡介
scikit-learn(簡稱sklearn)是一個Python機器學習庫,提供了各種常見機器學習演算法的實現,如回歸、分類、聚類、降維等。sklearn的介面易於使用,並且具有很好的可擴展性,能夠輕鬆地與其他Python庫結合使用。
sklearn提供的數據集包括iris、digits、boston house prices等,同時也支持導入其他格式的數據集。
三、數據預處理
數據預處理是指在應用機器學習演算法之前,對數據進行清洗、轉換和歸一化等處理。數據預處理的目的是提高模型的準確率和穩定性。
sklearn提供了一系列數據預處理函數,如StandardScaler(標準化數據)、MinMaxScaler(歸一化數據)、Imputer(數據填補)等。下面是一個數據預處理的示例代碼:
from sklearn.preprocessing import StandardScaler
from sklearn.impute import SimpleImputer
# 導入數據
data = [[1, 2], [np.nan, 3], [7, 6]]
# 創建StandardScaler對象
scaler = StandardScaler()
# 標準化數據
data_scaler = scaler.fit_transform(data)
print("標準化數據:", data_scaler)
# 創建SimpleImputer對象
imputer = SimpleImputer(strategy="mean")
# 填補數據
data_impute = imputer.fit_transform(data)
print("填補數據:", data_impute)
四、模型選擇和評估
在使用機器學習演算法之前,首先需要選擇適合的模型,然後通過交叉驗證等方法對模型進行評估。sklearn提供了一系列模型選擇和評估函數,如train_test_split(將數據集劃分為訓練集和測試集)、KFold(交叉驗證)、GridSearchCV(網格搜索)等。下面是一個模型選擇和評估的示例代碼:
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split, KFold, GridSearchCV
from sklearn.tree import DecisionTreeClassifier
# 導入數據集
iris = load_iris()
# 劃分數據集
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.3, random_state=0)
# 創建決策樹分類器
clf = DecisionTreeClassifier(random_state=0)
# 交叉驗證評估模型
cv = KFold(n_splits=5, shuffle=True, random_state=0)
score = cross_val_score(clf, X_train, y_train, cv=cv)
print("交叉驗證得分:", score.mean())
# 網格搜索選擇最優參數
params = {"max_depth": [1, 2, 3, 4, 5]}
gs = GridSearchCV(clf, params, cv=cv)
gs.fit(X_train, y_train)
print("最優參數:", gs.best_params_)
print("網格搜索得分:", gs.best_score_)
# 在測試集上評估模型
score_test = clf.score(X_test, y_test)
print("在測試集上得分:", score_test)
五、模型訓練和預測
在模型選擇和評估之後,通常會選取表現最優的模型進行訓練和預測。sklern提供了各種常用的機器學習演算法的實現,如線性回歸、邏輯回歸、支持向量機、決策樹、隨機森林等。下面是一個訓練和預測的示例代碼:
from sklearn.datasets import load_boston
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split
# 導入數據集
boston = load_boston()
# 劃分數據集
X_train, X_test, y_train, y_test = train_test_split(boston.data, boston.target, test_size=0.3, random_state=0)
# 創建線性回歸模型
clf = LinearRegression()
# 在訓練集上訓練模型
clf.fit(X_train, y_train)
# 在測試集上預測
y_pred = clf.predict(X_test)
# 計算均方誤差
mse = mean_squared_error(y_test, y_pred)
print("均方誤差:", mse)
原創文章,作者:HDHY,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/138498.html
微信掃一掃
支付寶掃一掃