一、機器學習基礎概念
機器學習是人工智慧領域的一個重要分支,目的是讓計算機自動學習數據中的規律,從而進行預測和決策。在機器學習中,通常會將數據分為訓練集和測試集,在訓練集上訓練模型,然後在測試集上評估模型的性能。常見的機器學習演算法包括決策樹、支持向量機、樸素貝葉斯等。
二、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