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