01- 机器学习经典流程 (中国人寿保费项目) (项目一)
生活随笔
收集整理的這篇文章主要介紹了
01- 机器学习经典流程 (中国人寿保费项目) (项目一)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
- ?刪除特征: data = data.drop(['region', 'sex'], axis=1)
- 特征數據調整: data.apply( )
- 將非數字類型特征轉換為數值: data = pd.get_dummies(data)
- 設定目標值和特征值:
中國人壽保費項目
數據存儲: https://blog.csdn.net/March_A/article/details/128985290
1. 導入數據
import numpy as np import pandas as pd data = pd.read_excel('./中國人壽.xlsx') data.head(10)2. 查看數據特征
import seaborn as sns # 性別對保費影響 sns.kdeplot(data['charges'],shade = True,hue = data['sex'])# 地區對保費影響 sns.kdeplot(data['charges'],shade = True,hue = data['region'])# 吸煙對保費影響 sns.kdeplot(data['charges'],shade = True,hue = data['smoker'])# 孩子數量對保費影響 sns.kdeplot(data['charges'],shade = True,hue = data['children'],palette='Set1')-
不同性別對保費影響不大,不同性別的保費的概率分布曲線基本重合,因此這個特征無足輕重,可以刪除, 地區同理
-
吸煙與否對保費的概率分布曲線差別很大,整體來說不吸煙更加健康,那么保費就低,這個特征很重要
-
家庭孩子數量對保費有一定影響
3. 刪除不重要數據
data = data.drop(['region', 'sex'], axis=1)4 特征屬性調整
# 體重指數,離散化轉換,體重兩種情況:標準、肥胖 def convert(df,bmi):df['bmi'] = 'fat' if df['bmi'] >= bmi else 'standard'return df data = data.apply(convert, axis = 1, args=(30,)) # args 是傳參 data.head()5 非數值轉換為數據類型 (去字符串)
# 特征提取,離散型數據轉換為數值型數據 data = pd.get_dummies(data) data.head()6 設定目標值和特征值
# 特征和目標值抽取 X = data.drop('charges', axis=1) # 訓練數據 y = data['charges'] # 目標值 X.head()7 數據拆分
# 數據拆分 from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)8 數據升維
# 特征升維 from sklearn.preprocessing import PolynomialFeatures poly = PolynomialFeatures(degree= 2, include_bias = False) X_train_poly = poly.fit_transform(X_train) X_test_poly = poly.fit_transform(X_test)9 模型訓練
# 模型訓練 from sklearn.linear_model import LinearRegression model_1 = LinearRegression() model_1.fit(X_train_poly, y_train)# 使用彈性網絡訓練 from sklearn.linear_model import ElasticNet model_2 = ElasticNet(alpha = 0.3,l1_ratio = 0.5,max_iter = 50000) model_2.fit(X_train_poly,y_train)10? 模型評估
model_1.score(X_train_poly, y_train) # 0.8624083431844988 model_2.score(X_test_poly, model_2.predict(X_test_poly)) # 1.0 # 模型評估 from sklearn.metrics import mean_squared_error,mean_squared_log_error print('訓練數據均方誤差:',np.sqrt(mean_squared_error(y_train,model_1.predict(X_train_poly)))) print('測試數據均方誤差:',np.sqrt(mean_squared_error(y_test,model_1.predict(X_test_poly))))print('訓練數據對數誤差:',np.sqrt(mean_squared_log_error(y_train,model_1.predict(X_train_poly)))) print('測試數據對數誤差:',np.sqrt(mean_squared_log_error(y_test,model_1.predict(X_test_poly))))結論:
-
進行EDA數據探索,可以查看無關緊要特征
-
進行特征工程:刪除無用特征、特征離散化、特征提取。這對機器學習都至關重要
-
對于簡單的數據(特征比較少)進行線性回歸,一般需要進行特征升維
-
選擇不同的算法,進行訓練和評估,從中篩選優秀算法
總結
以上是生活随笔為你收集整理的01- 机器学习经典流程 (中国人寿保费项目) (项目一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#项目解决方案管理器中将*.Desig
- 下一篇: SSM 框架原理简介及解析