1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

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

        共 3755字,需瀏覽 8分鐘

         ·

        2022-02-11 23:42

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

        • 建模無敵:用戶通過scikit-learn能夠實現各種監(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


        -?END -

        本文為轉載分享&推薦閱讀,若侵權請聯系后臺刪除


        對比Excel系列圖書累積銷量達15w冊,讓你輕松掌握數據分析技能,可以在全網搜索書名進行了解:

        瀏覽 94
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

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

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            波多野吉衣久久 | 波多野结衣伦理电影在线观看 | a猛片免在新观看 | 欧美第一作坊视频平台2020欧美 | 欧美黑人粗大巨在线 | 里番全彩| 小早川怜子一区二区三区 | 成人天堂一区二区三区精华液功效 | 超碰人人操人人 | 裸体武打性艳史 |