天天看點

手把手帶你學python—牛客網python基礎 鸢尾花分類

牛客是一款不論是面試 還是刷題 都是非常有用的 還等什麼,傳送門- ​​牛客網python基礎​​

🥇作者簡介:大家好我是 uu 給剛入門的python的小夥伴帶來一套python 完整的入門基礎。

🥈個人首頁:uu首頁

📑 推薦一款非常火的面試、刷題神器👉  ​​牛客網python基礎​​

覺得uu寫的不錯的話 麻煩動動小手 點贊👍 收藏⭐  評論📄

今天給大家帶來的刷題系列是:pandas讀取檔案檢視使用者資料集的大小

​​ 

手把手帶你學python—牛客網python基礎 鸢尾花分類

​ 

手把手帶你學python—牛客網python基礎 鸢尾花分類

題目介紹: 

描述

機器學習庫 sklearn 自帶鸢尾花分類資料集,分為四個特征和三個類别,其中這三個類别在資料集中分别表示為 0, 1 和 2,請實作 transform_three2two_cate 函數的功能,該函數是一個無參函數,要求将資料集中 label 為 2 的資料進行移除,也就是說僅保留 label 為 0 和為 1 的情況,并且對 label 為 0 和 1 的特征資料進行保留,傳回值為 numpy.ndarray 格式的訓練特征資料和 label 資料,分别為命名為 new_feat 和 new_label。

然後在此基礎上,實作 train_and_evaluate 功能,并使用生成的 new_feat 和 new_label 資料集進行二分類訓練,限定機器學習分類器隻能從邏輯回歸和決策樹中進行選擇,将訓練資料和測試資料按照 8:2 的比例進行分割。

要求輸出測試集上的 accuracy_score,同時要求 accuracy_score 要不小于 0.95。

解題思路: 

使用python的sklearn庫進行機器學習代碼撰寫

使用sklearn 的内置api

import numpy as np

from sklearn import datasets

from sklearn.model_selection import train_test_split

from sklearn.preprocessing import MinMaxScaler

from sklearn.linear_model import LogisticRegression

from sklearn.metrics import f1_score,roc_auc_score,accuracy_score

from sklearn.tree import DecisionTreeClassifier 

代碼解析:

import numpy as np
 from sklearn import datasets
 from sklearn.model_selection import train_test_split
 from sklearn.preprocessing import MinMaxScaler
 from sklearn.linear_model import LogisticRegression
 from sklearn.metrics import f1_score,roc_auc_score,accuracy_score
 from sklearn.tree import DecisionTreeClassifierdef transform_three2two_cate():
     data = datasets.load_iris()
     #其中data特征資料的key為data,标簽資料的key為target
     #需要取出原來的特征資料和标簽資料,移除标簽為2的label和特征資料,傳回值new_feat為numpy.ndarray格式特征資料,new_label為對應的numpy.ndarray格式label資料
     #需要注意特征和标簽的順序一緻性,否則資料集将混亂
     #code start here
     index_arr = np.where(data.target == 2)[0]
     new_feat = np.delete(data.data, index_arr, 0)
     new_label = np.delete(data.target, index_arr)    #code end here
     return new_feat,new_labeldef train_and_evaluate():
     data_X,data_Y = transform_three2two_cate()
     train_x,test_x,train_y,test_y = train_test_split(data_X,data_Y,test_size = 0.2)
     #已經劃分好訓練集和測試集,接下來請實作對資料的訓練
     #code start here
     
     estimator = DecisionTreeClassifier()
     estimator.fit(train_x, train_y)
     y_predict = estimator.predict(test_x)
         #code end here
     #注意模型預測的label需要定義為 y_predict,格式為list或numpy.ndarray
     print(accuracy_score(y_predict,test_y))if __name__ == "__main__":
     train_and_evaluate()
     #要求執行train_and_evaluate()後輸出為:
     #1、{0,1},代表資料label為0和1
     #2、測試集上的準确率分數,要求>0.95      
​​import numpy as npfrom sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import MinMaxScaler
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import f1_score,roc_auc_score,accuracy_score
from sklearn.tree import DecisionTreeClassifier

def transform_three2two_cate():
    data = datasets.load_iris()
    #其中data特征資料的key為data,标簽資料的key為target
    #需要取出原來的特征資料和标簽資料,移除标簽為2的label和特征資料,傳回值new_feat為numpy.ndarray格式特征資料,new_label為對應的numpy.ndarray格式label資料
    #需要注意特征和标簽的順序一緻性,否則資料集将混亂
    #code start here
    index_arr = np.where(data.target == 2)[0]
    new_feat = np.delete(data.data, index_arr, 0)
    new_label = np.delete(data.target, index_arr)

    #code end here
    return new_feat,new_label

def train_and_evaluate():
    data_X,data_Y = transform_three2two_cate()
    train_x,test_x,train_y,test_y = train_test_split(data_X,data_Y,test_size = 0.2)
    #已經劃分好訓練集和測試集,接下來請實作對資料的訓練
    #code start here
    
    estimator = DecisionTreeClassifier()
    estimator.fit(train_x, train_y)
    y_predict = estimator.predict(test_x)
    



    #code end here
    #注意模型預測的label需要定義為 y_predict,格式為list或numpy.ndarray
    print(accuracy_score(y_predict,test_y))

if __name__ == "__main__":
    train_and_evaluate()
    #要求執行train_and_evaluate()後輸出為:
    #1、{0,1},代表資料label為0和1
    #2、測試集上的準确率分數,要求>0.95​​