<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          【機器學習】機器學習神器Scikit-Learn保姆級入門教程

          共 3822字,需瀏覽 8分鐘

           ·

          2022-01-19 16:25

          公眾號:尤而小屋
          作者:Peter
          編輯:Peter

          Scikit-learn是一個非常知名的Python機器學習庫,它廣泛地用于統(tǒng)計分析和機器學習建模等數據科學領域。

          • 建模無敵:用戶通過scikit-learn能夠實現(xiàn)各種監(jiān)督和非監(jiān)督學習的模型
          • 功能多樣:同時使用sklearn還能夠進行數據的預處理、特征工程、數據集切分、模型評估等工作
          • 數據豐富:內置豐富的數據集,比如:泰坦尼克、鳶尾花等,數據不再愁啦

          本篇文章通過簡明快要的方式來介紹scikit-learn的使用,更多詳細內容請參考官網:

          1. 內置數據集使用
          2. 數據集切分
          3. 數據歸一化和標準化
          4. 類型編碼
          5. 建模6步曲

          Scikit-learn使用神圖

          下面這張圖是官網提供的,從樣本量的大小開始,分為回歸、分類、聚類、數據降維共4個方面總結了scikit-learn的使用:

          https://scikit-learn.org/stable/tutorial/machine_learning_map/index.html

          安裝

          關于安裝scikit-learn,建議通過使用anaconda來進行安裝,不用擔心各種配置和環(huán)境問題。當然也可以直接pip來安裝:

          pip?install?scikit-learn

          數據集生成

          sklearn內置了一些優(yōu)秀的數據集,比如:Iris數據、房價數據、泰坦尼克數據等。

          import?pandas?as?pd
          import?numpy?as?np

          import?sklearn?
          from?sklearn?import?datasets??#?導入數據集

          分類數據-iris數據

          #?iris數據
          iris?=?datasets.load_iris()
          type(iris)

          sklearn.utils.Bunch

          iris數據到底是什么樣子?每個內置的數據都存在很多的信息

          可以將上面的數據生成我們想看到的DataFrame,還可以添加因變量:

          回歸數據-波士頓房價

          我們重點關注的屬性:

          • data
          • target、target_names
          • feature_names
          • filename

          同樣可以生成DataFrame:

          三種方式生成數據

          方式1

          #調用模塊
          from?sklearn.datasets?import?load_iris
          data?=?load_iris()

          #導入數據和標簽
          data_X?=?data.data
          data_y?=?data.target?

          方式2

          from?sklearn?import?datasets
          loaded_data?=?datasets.load_iris()??#?導入數據集的屬性

          #導入樣本數據
          data_X?=?loaded_data.data
          #?導入標簽
          data_y?=?loaded_data.target

          方式3

          #?直接返回
          data_X,?data_y?=?load_iris(return_X_y=True)

          數據集使用匯總

          from?sklearn?import?datasets??#?導入庫

          boston?=?datasets.load_boston()??#?導入波士頓房價數據
          print(boston.keys())??#?查看鍵(屬性)?????['data','target','feature_names','DESCR',?'filename']?
          print(boston.data.shape,boston.target.shape)??#?查看數據的形狀?
          print(boston.feature_names)??#?查看有哪些特征?
          print(boston.DESCR)??#?described?數據集描述信息?
          print(boston.filename)??#?文件路徑?

          數據切分

          #?導入模塊
          from?sklearn.model_selection?import?train_test_split
          #?劃分為訓練集和測試集數據
          X_train,?X_test,?y_train,?y_test?=?train_test_split(
          ??data_X,?
          ??data_y,?
          ??test_size=0.2,
          ??random_state=111
          )

          #?150*0.8=120
          len(X_train)

          數據標準化和歸一化

          from?sklearn.preprocessing?import?StandardScaler??#?標準化
          from?sklearn.preprocessing?import?MinMaxScaler??#?歸一化

          #?標準化
          ss?=?StandardScaler()
          X_scaled?=?ss.fit_transform(X_train)??#?傳入待標準化的數據

          #?歸一化
          mm?=?MinMaxScaler()
          X_scaled?=?mm.fit_transform(X_train)

          類型編碼

          來自官網案例:https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.LabelEncoder.html

          對數字編碼

          對字符串編碼

          建模案例

          導入模塊

          from?sklearn.neighbors?import?KNeighborsClassifier,?NeighborhoodComponentsAnalysis??#?模型
          from?sklearn.datasets?import?load_iris??#?導入數據
          from?sklearn.model_selection?import?train_test_split??#?切分數據
          from?sklearn.model_selection?import?GridSearchCV??#?網格搜索
          from?sklearn.pipeline?import?Pipeline??#?流水線管道操作

          from?sklearn.metrics?import?accuracy_score??#?得分驗證

          模型實例化

          #?模型實例化
          knn?=?KNeighborsClassifier(n_neighbors=5)

          訓練模型

          knn.fit(X_train,?y_train)
          KNeighborsClassifier()

          測試集預測

          y_pred?=?knn.predict(X_test)
          y_pred??#?基于模型的預測值
          array([0,?0,?2,?2,?1,?0,?0,?2,?2,?1,?2,?0,?1,?2,?2,?0,?2,?1,?0,?2,?1,?2,
          ???????1,?1,?2,?0,?0,?2,?0,?2])

          得分驗證

          模型得分驗證的兩種方式:

          knn.score(X_test,y_test)
          0.9333333333333333
          accuracy_score(y_pred,y_test)
          0.9333333333333333

          網格搜索

          如何搜索參數

          from?sklearn.model_selection?import?GridSearchCV

          #?搜索的參數
          knn_paras?=?{"n_neighbors":[1,3,5,7]}
          #?默認的模型
          knn_grid?=?KNeighborsClassifier()

          #?網格搜索的實例化對象
          grid_search?=?GridSearchCV(
          ?knn_grid,?
          ?knn_paras,?
          ?cv=10??#?10折交叉驗證
          )
          grid_search.fit(X_train,?y_train)
          GridSearchCV(cv=10,?estimator=KNeighborsClassifier(),
          ?????????????param_grid={'n_neighbors':?[1,?3,?5,?7]})
          #?通過搜索找到的最好參數值
          grid_search.best_estimator_?
          KNeighborsClassifier(n_neighbors=7)
          grid_search.best_params_

          Out[42]:

          {'n_neighbors':?7}
          grid_search.best_score_
          0.975

          基于搜索結果建模

          knn1?=?KNeighborsClassifier(n_neighbors=7)

          knn1.fit(X_train,?y_train)
          KNeighborsClassifier(n_neighbors=7)

          通過下面的結果可以看到:網格搜索之后的建模效果是優(yōu)于未使用網格搜索的模型:

          y_pred_1?=?knn1.predict(X_test)

          knn1.score(X_test,y_test)
          1.0
          accuracy_score(y_pred_1,y_test)
          1.0
          往期精彩回顧




          瀏覽 47
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  黄片网站免费 | 动漫3D成人H无码国漫 | 欧美日韩中文 | 无码免费一区二区三区四区 | 久久伊人爱|