牛客是一款不論是面試 還是刷題 都是非常有用的 還等什麼,傳送門- 牛客網python基礎
🥇作者簡介:大家好我是 uu 給剛入門的python的小夥伴帶來一套python 完整的入門基礎。
🥈個人首頁:uu首頁
📑 推薦一款非常火的面試、刷題神器👉 牛客網python基礎
覺得uu寫的不錯的話 麻煩動動小手 點贊👍 收藏⭐ 評論📄
今天給大家帶來的刷題系列是:pandas讀取檔案檢視使用者資料集的大小
題目介紹:
描述
機器學習庫 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