# coding = utf-8 from sklearn import datasets from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split ''' 算法是核心,數據和計算是基礎 定位: 1、分析數據 2、分析業務 3、應用常見算法進行對比校驗 4、特征工程、調參、優化 數據類型 離散型數據:由記錄不同類別個體的數目所得到的數據,又稱計數數據,所以數據全是整數 連續型數據:變量可以在某一范圍內任取一數,即變量的取值是可以連續的,通常是小數 注意:離散型是區間內不可分,連續型區間內可分 算法分類: 監督學習:特征值和目標值 分類(目標值是離散型):K近鄰,貝葉斯、決策樹、隨機森林、邏輯回歸、神經網絡 回歸(目標值是連續型):線性回歸、嶺回歸 非監督學習:特征值 聚類:K均值(K-means) 算法開發流程: 1、准備數據 公司本身數據 kaggle 購買數據 2、明確問題(分類還是回歸) 建立算法數據:根據數據類型划分應用種類 3、數據基本處理 pd去處理數據(缺失值,合並表....) 4、特征工程 特征進行處理(訓練集,測試集、驗證集) 5、找尋合適的算法進行分析 1、估計器選擇 2、調用fit(x_train,y_train) 3、調用 a)預測:y_predict=predict(x_test) b)預測的准確率:score(x_test,y_test) 6、模型的評估 ---->評估不合格,則考慮:1、換算法 2、調參數 3、特征工程再進一步處理 7、模型實現預測,以API形式提供 數據集划分 訓練集:70% 75%(建議) 80% 測試集:30% 25%(建議) 20% 驗證集 API: Sklearn.model_selection.train_test_split(*arrays, **options) x 數據集的特征值 y 數據集的標簽值 test_size 測試集的大小,一般為float random_state 隨機數種子,不同的種子會造成不同的隨機 采樣結果。相同的種子采樣結果相同。 return 訓練集特征值,測試集特征值,訓練標簽,測試標簽 (默認隨機取) Sklearn數據集Api datasets.load_*() #獲取小規模數據集 datasets.fetch_*(data_home=None) #獲取大的數據集 小數據集: load*和fetch*返回的數據類型datasets.base.Bunch(字典格式) data:特征數據數組,是 [n_samples * n_features] 的二維 numpy.ndarray 數組 target:標簽數組,是 n_samples 的一維 numpy.ndarray 數組 DESCR:數據描述 feature_names:特征名,新聞數據,手寫數字、回歸數據集沒有 target_names:標簽名,回歸數據集沒有 大數據集: sklearn.datasets.fetch_20newsgroups(data_home=None,subset=‘train’) subset: 'train'或者'test','all',可選,選擇要加載的數據集. 訓練集的“訓練”,測試集的“測試”,兩者的“全部” 清除數據: datasets.clear_data_home(data_home=None) 清除目錄下的數據 轉換器: fit_transform():輸入數據直接轉換 fit():輸入數據,不做轉換,但會計算一些平均值,方差等 transform():進行數據的轉換 注意:fit_transform = fit + transform 估計器:是一類實現了算法的API 1、用於分類的估計器: sklearn.neighbors k-近鄰算法 sklearn.naive_bayes 貝葉斯 sklearn.linear_model.LogisticRegression 邏輯回歸 2、用於回歸的估計器: sklearn.linear_model.LinearRegression 線性回歸 sklearn.linear_model.Ridge 嶺回歸 ''' def iris(): """ 數據切分 :return: """ li = load_iris() x_train,x_test,y_train,y_test = train_test_split(li.data,li.target,test_size=0.25) print("訓練集數據特征值",x_train) print("訓練集數據目標值", y_train) if __name__ == "__main__": iris()