99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀作為文科生,我是如何轉(zhuǎn)行數(shù)據(jù)挖掘工程師的 | 附電信用戶實(shí)戰(zhàn)案例
作為文科生,我是如何轉(zhuǎn)行數(shù)據(jù)挖掘工程師的 | 附電信用戶實(shí)戰(zhàn)案例
2022-02-23
收藏
作為文科生,我是如何轉(zhuǎn)行<a href='/map/shujuwajue/' style='color:#000;font-size:inherit;'>數(shù)據(jù)挖掘</a>工程師的 | 附電信用戶實(shí)戰(zhàn)案例

隨著大數(shù)據(jù)的時(shí)代的來臨,各個(gè)行業(yè)都受到了數(shù)據(jù)分析不同程度的影響和作用。尤其是在電信行業(yè),數(shù)據(jù)分析已經(jīng)逐漸成為電信運(yùn)營商的戰(zhàn)略優(yōu)勢(shì)之一。

大家好,我是一名CDA持證人,今天想跟大家分享一下,我如何從文科生轉(zhuǎn)行成為了一名電信行業(yè)的數(shù)據(jù)挖掘工程師。

主要內(nèi)容分成以下三塊:

  • 第一部分我作為文科生轉(zhuǎn)行數(shù)據(jù)挖掘的歷程;
  • 第二部分關(guān)于目前從事數(shù)據(jù)挖掘,主要針對(duì)商業(yè)數(shù)據(jù)挖掘所需要掌握的一些技能;
  • 第三部分案例分享:數(shù)據(jù)分析思維如何應(yīng)用到電信行業(yè),電信用戶流失預(yù)測(cè)模型

01、文科生轉(zhuǎn)行數(shù)據(jù)挖掘工程師的歷程

首先看到第一部分的內(nèi)容,也就是我的轉(zhuǎn)行歷程。

我高中那會(huì)兒讀的是文科,大學(xué)期間學(xué)習(xí)了社會(huì)學(xué)專業(yè)。在本科期間,我也接觸過一些統(tǒng)計(jì)學(xué)的知識(shí),線性代數(shù)等知識(shí)也學(xué)過,但當(dāng)時(shí)對(duì)這些學(xué)科將來的用途并不是很清楚。

參加工作后,最初我從事產(chǎn)品運(yùn)營的相關(guān)工作。在工作過程中,我接觸到了數(shù)據(jù)分析相關(guān)的內(nèi)容。當(dāng)時(shí)我感覺自己工作內(nèi)容比較雜,也沒有拿得出來的技能。

我認(rèn)為數(shù)據(jù)分析很有前景,無論是文科生還是理科生都可以學(xué),學(xué)起來也比較有趣,內(nèi)容不枯燥,所以我漸漸開始學(xué)習(xí)數(shù)據(jù)分析。

這里我列了幾個(gè)對(duì)我比較關(guān)鍵的節(jié)點(diǎn),這些對(duì)我未來的工作有了較大的影響。

作為文科生,我是如何轉(zhuǎn)行<a href='/map/shujuwajue/' style='color:#000;font-size:inherit;'>數(shù)據(jù)挖掘</a>工程師的 | 附電信用戶實(shí)戰(zhàn)案例

首先就是學(xué)數(shù)據(jù)挖掘,用的是SPSS Modeler。比較容易上手,入門也比較簡單。SPSS Modeler雖然很好用,但其實(shí)很多時(shí)候不能滿足數(shù)據(jù)清洗的一些需求,也有一些劣勢(shì),比如算法更新很慢,只有比較常規(guī)的算法,如果想用比較先進(jìn)的算法,還是開源的軟件提供的比較多。

之后我學(xué)習(xí)了Python,比較容易上手,語法也比較簡潔。通過大量練習(xí)掌握了爬蟲、數(shù)據(jù)清洗數(shù)據(jù)可視化等技能點(diǎn)。Python基本能滿足日常工作的需求。

第三個(gè)節(jié)點(diǎn)是我學(xué)習(xí)了SQL和統(tǒng)計(jì)知識(shí)。SQL本身基礎(chǔ)的知識(shí)不是特別復(fù)雜,然后主要靠練習(xí),包括統(tǒng)計(jì)的一些知識(shí),這也是我在之后的工作中不斷學(xué)習(xí)的。

02、從事數(shù)據(jù)挖掘技能需求

目前我目前從事的是數(shù)據(jù)挖掘的相關(guān)工作,接下來講一下工作中所需要的一些技能。

作為文科生,我是如何轉(zhuǎn)行<a href='/map/shujuwajue/' style='color:#000;font-size:inherit;'>數(shù)據(jù)挖掘</a>工程師的 | 附電信用戶實(shí)戰(zhàn)案例

這部分可以分為硬技能和軟技能。

硬技能

硬技能這里我分為理論基礎(chǔ)、算法能力、分析工具和通用工具。下面具體來看一看。理論基礎(chǔ)中統(tǒng)計(jì)知識(shí)是不可或缺的。后面的概率論、線性代數(shù)、微積分其實(shí)是跟偏算法相關(guān)。

算法方面主要需要一些機(jī)器學(xué)習(xí)深度學(xué)習(xí)的算法。比如分類、回歸、聚類等一些比較基礎(chǔ)的算法。

不同于算法工程師對(duì)算法的要求會(huì)比較高,像偏業(yè)務(wù)的數(shù)據(jù)挖掘的崗位,對(duì)算法的要求沒那么高。你能夠做到理解算法的基本原理跟應(yīng)用場(chǎng)景,能夠應(yīng)用工具去實(shí)現(xiàn)它,能夠解讀算法最后的結(jié)果,也就差不多了,對(duì)數(shù)學(xué)的要求也并不太高。

關(guān)于深度學(xué)習(xí),現(xiàn)在數(shù)據(jù)挖掘等算法崗也相對(duì)內(nèi)卷,如果你不會(huì)也不了解深度學(xué)習(xí)就有點(diǎn)說不過去了,這方面可以了解一下。還需要掌握一些工具庫,現(xiàn)在深度學(xué)習(xí)的工具庫比較多,也有一些比較簡便的工具庫能協(xié)助實(shí)現(xiàn)相關(guān)的功能。

然后看到分析工具。其實(shí)目前主要用的也就是SQL跟Python,主要是看你公司的數(shù)據(jù)量,如果數(shù)據(jù)量不是很大的話,基礎(chǔ)的一些SQL知識(shí)就夠了,可能關(guān)系數(shù)據(jù)庫就可以了,包括在單機(jī)里面,去運(yùn)行Python也可以的;但是如果公司的數(shù)據(jù)量特別大的話,比如我目前是在Hadoop的平臺(tái)做一些數(shù)據(jù)分析跟數(shù)據(jù)挖掘。如果本身的數(shù)據(jù)量就比較大,可能會(huì)用到Hive數(shù)據(jù)倉庫等。

再看到建模工具,目前其實(shí)主流是Python,還有集成了Pyspark,這是用得比較多的。然后建模的話,考慮到數(shù)據(jù)量Python在80%的情況上都是夠用的。

關(guān)于通用工具,Excel跟PPT都是比較基礎(chǔ)的。下面這個(gè)Shell是開發(fā)工具,很多時(shí)候會(huì)涉及到一些開發(fā)的工作,比如說標(biāo)簽表的開發(fā),然后就會(huì)用到Shell結(jié)合ETL自動(dòng)化平臺(tái),調(diào)用需要的腳本進(jìn)行自動(dòng)化的運(yùn)行。就相當(dāng)于是每天它會(huì)自動(dòng)的跑一些腳本,而不需要去手工或者是在單機(jī)操作,這些都是在平臺(tái)上面自動(dòng)完成的。

軟技能

軟技能這塊簡單看一下,包括像業(yè)務(wù)的理解,比如你進(jìn)入任何一個(gè)行業(yè),你前幾個(gè)月會(huì)多花時(shí)間了解該行業(yè)的業(yè)務(wù)表,業(yè)務(wù)涉及的一些內(nèi)容,核心的盈利業(yè)務(wù)是哪些。還有一些通用的能力,比如溝通、匯報(bào)能力等,因?yàn)槟憬?jīng)常會(huì)需要將模型和分析報(bào)告講給別人聽,因此這些能力也是十分重要的。還有學(xué)習(xí)能力。數(shù)據(jù)行業(yè)的迭代比較快,需要有持續(xù)學(xué)習(xí)的能力。

03、數(shù)據(jù)分析項(xiàng)目實(shí)操

用Python創(chuàng)建電信客戶流失模型

下面我們?cè)賮砜匆幌聰?shù)據(jù)分析在電信行業(yè)的應(yīng)用,目前國內(nèi)運(yùn)營商運(yùn)用大數(shù)據(jù)主要有五方面:

(1)網(wǎng)絡(luò)管理和優(yōu)化,包括基礎(chǔ)設(shè)施建設(shè)優(yōu)化和網(wǎng)絡(luò)運(yùn)營管理和優(yōu)化;

(2)市場(chǎng)與精準(zhǔn)營銷,包括客戶畫像、關(guān)系鏈研究、精準(zhǔn)營銷、實(shí)時(shí)營銷和個(gè)性化推薦;

(3)客戶關(guān)系管理,包括客服中心優(yōu)化和客戶生命周期管理;

(4)企業(yè)運(yùn)營管理,包括業(yè)務(wù)運(yùn)營監(jiān)控和經(jīng)營分析;

(5)數(shù)據(jù)商業(yè)化指數(shù)據(jù)對(duì)外商業(yè)化。

接下來,今天給大家演示一下,把數(shù)據(jù)分析應(yīng)用到電信行業(yè)的具體案例,這里教大家用Python寫一個(gè)電信用戶流失預(yù)測(cè)模型。

01、商業(yè)理解

流失客戶是指那些曾經(jīng)使用過產(chǎn)品或服務(wù),由于對(duì)產(chǎn)品失去興趣等種種原因,不再使用產(chǎn)品或服務(wù)的顧客。

電信服務(wù)公司、互聯(lián)網(wǎng)服務(wù)提供商、保險(xiǎn)公司等經(jīng)常使用客戶流失分析和客戶流失率作為他們的關(guān)鍵業(yè)務(wù)指標(biāo)之一,因?yàn)榱糇∫粋€(gè)老客戶的成本遠(yuǎn)遠(yuǎn)低于獲得一個(gè)新客戶。

預(yù)測(cè)分析使用客戶流失預(yù)測(cè)模型,通過評(píng)估客戶流失的風(fēng)險(xiǎn)傾向來預(yù)測(cè)客戶流失。由于這些模型生成了一個(gè)流失概率排序名單,對(duì)于潛在的高概率流失客戶,他們可以有效地實(shí)施客戶保留營銷計(jì)劃。

下面我們就教你如何用Python寫一個(gè)電信用戶流失預(yù)測(cè)模型,以下是具體步驟和關(guān)鍵代碼。

02、數(shù)據(jù)理解

此次分析數(shù)據(jù)來自于IBM Sample Data Sets,統(tǒng)計(jì)自某電信公司一段時(shí)間內(nèi)的消費(fèi)數(shù)據(jù)。共有7043筆客戶資料,每筆客戶資料包含21個(gè)字段,其中1個(gè)客戶ID字段,19個(gè)輸入字段及1個(gè)目標(biāo)字段-Churn(Yes代表流失,No代表未流失),輸入字段主要包含以下三個(gè)維度指標(biāo):用戶畫像指標(biāo)、消費(fèi)產(chǎn)品指標(biāo)、消費(fèi)信息指標(biāo)。字段的具體說明如下:

作為文科生,我是如何轉(zhuǎn)行<a href='/map/shujuwajue/' style='color:#000;font-size:inherit;'>數(shù)據(jù)挖掘</a>工程師的 | 附電信用戶實(shí)戰(zhàn)案例

03、數(shù)據(jù)讀入和概覽

首先導(dǎo)入所需包。

# 數(shù)據(jù)處理
import numpy as np
import pandas as pd
# 可視化
import matplotlib.pyplot as plt
import seaborn as sns
import plotly as py
import plotly.graph_objs as go
import plotly.figure_factory as ff
# 前處理
from sklearn.preprocessing import LabelEncoder
from sklearn.preprocessing import StandardScaler
# 建模
from sklearn.linear_model import LogisticRegression
from sklearn.neighbors import KNeighborsClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn import tree
from sklearn.ensemble import RandomForestClassifier
from sklearn.naive_bayes import GaussianNB
from sklearn.neural_network import MLPClassifier
from sklearn.svm import SVC
from lightgbm import LGBMClassifier
from xgboost import XGBClassifier
# 模型評(píng)估
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.metrics import confusion_matrix, accuracy_score, classification_report
from sklearn.metrics import roc_auc_score, roc_curve, scorer
from sklearn.metrics import recall_score, precision_score, f1_score, cohen_kappa_score
pd.set_option('display.max_columns'None)


讀入數(shù)據(jù)集

df = pd.read_csv('./Telco-Customer-Churn.csv')
df.head()

作為文科生,我是如何轉(zhuǎn)行<a href='/map/shujuwajue/' style='color:#000;font-size:inherit;'>數(shù)據(jù)挖掘</a>工程師的 | 附電信用戶實(shí)戰(zhàn)案例

04、數(shù)據(jù)初步清洗

首先進(jìn)行初步的數(shù)據(jù)清洗工作,包含錯(cuò)誤值和異常值處理,并劃分類別型和數(shù)值型字段類型,其中清洗部分包含:

  • OnlineSecurity、OnlineBackup、DeviceProtection、TechSupport、StreamingTV、StreamingMovies:錯(cuò)誤值處理
  • TotalCharges:異常值處理
  • tenure:自定義分箱
  • 定義類別型和數(shù)值型字段

# 錯(cuò)誤值處理
repl_columns = ['OnlineSecurity''OnlineBackup''DeviceProtection',
'TechSupport','StreamingTV''StreamingMovies']
for i in repl_columns:
df[i] = df[i].replace({'No internet service' : 'No'})
# 替換值SeniorCitizen
df["SeniorCitizen"] = df["SeniorCitizen"].replace({1"Yes"0"No"})
# 替換值TotalCharges
df['TotalCharges'] = df['TotalCharges'].replace(' ', np.nan)
# TotalCharges空值:數(shù)據(jù)量小,直接刪除
df = df.dropna(subset=['TotalCharges'])
df.reset_index(drop=True, inplace=True
# 重置索引
# 轉(zhuǎn)換數(shù)據(jù)類型
df['TotalCharges'] = df['TotalCharges'].astype('float')
# 轉(zhuǎn)換tenure
def transform_tenure(x):
if x <= 12:
return 'Tenure_1'
elif x <= 24:
return 'Tenure_2'
elif x <= 36:
return 'Tenure_3'
elif x <= 48:
return 'Tenure_4'
elif x <= 60:
return 'Tenure_5'
else:
return 'Tenure_over_5'
df['tenure_group'] = df.tenure.apply(transform_tenure)
# 數(shù)值型和類別型字段
Id_col = ['customerID']
target_col = ['Churn']
cat_cols = df.nunique()[df.nunique() < 10].index.tolist()
num_cols = [i for i in df.columns if i not in cat_cols + Id_col]
print('類別型字段:n', cat_cols)
print('-' * 30)
print('數(shù)值型字段:n', num_cols)

類別型字段
[
'gender''SeniorCitizen''Partner''Dependents''PhoneService''MultipleLines''InternetService''OnlineSecurity''OnlineBackup''DeviceProtection''TechSupport''StreamingTV''StreamingMovies''Contract''PaperlessBilling''PaymentMethod''Churn''tenure_group']

------------------------------

數(shù)值型字段
['tenure''MonthlyCharges''TotalCharges']

05、探索性分析

對(duì)指標(biāo)進(jìn)行歸納梳理,分用戶畫像指標(biāo),消費(fèi)產(chǎn)品指標(biāo),消費(fèi)信息指標(biāo)。探索影響用戶流失的關(guān)鍵因素。

1. 目標(biāo)變量Churn分布

作為文科生,我是如何轉(zhuǎn)行<a href='/map/shujuwajue/' style='color:#000;font-size:inherit;'>數(shù)據(jù)挖掘</a>工程師的 | 附電信用戶實(shí)戰(zhàn)案例

經(jīng)過初步清洗之后的數(shù)據(jù)集大小為7032條記錄,其中流失客戶為1869條,占比26.6%,未流失客戶占比73.4%。

df['Churn'].value_counts()
No 5163
Yes 1869
NameChurndtypeint64


trace0 = go.Pie(labels=df['Churn'].value_counts().index,
values=df['Churn'].value_counts().values,
hole=.5,
rotation=90,
marker=dict(colors=['rgb(154,203,228)''rgb(191,76,81)'],
line=dict(color='white', width=1.3))
)
data = [trace0]
layout = go.Layout(title='目標(biāo)變量Churn分布')
fig = go.Figure(data=data, layout=layout)
py.offline.plot(fig, filename='./html/整體流失情況分布.html')

2.性別

作為文科生,我是如何轉(zhuǎn)行<a href='/map/shujuwajue/' style='color:#000;font-size:inherit;'>數(shù)據(jù)挖掘</a>工程師的 | 附電信用戶實(shí)戰(zhàn)案例

分析可見,男性和女性在客戶流失比例上沒有顯著差異。

plot_bar(input_col='gender', target_col='Churn', title_name='性別與是否流失的關(guān)系')

3. 老年用戶

作為文科生,我是如何轉(zhuǎn)行<a href='/map/shujuwajue/' style='color:#000;font-size:inherit;'>數(shù)據(jù)挖掘</a>工程師的 | 附電信用戶實(shí)戰(zhàn)案例

老年用戶流失比例更高,為41.68%,比非老年用戶高近兩倍,此部分原因有待進(jìn)一步探討。

plot_bar(input_col='SeniorCitizen', target_col='Churn', title_name='老年用戶與是否流失的關(guān)系')

4. 是否有配偶

作為文科生,我是如何轉(zhuǎn)行<a href='/map/shujuwajue/' style='color:#000;font-size:inherit;'>數(shù)據(jù)挖掘</a>工程師的 | 附電信用戶實(shí)戰(zhàn)案例

從婚姻情況來看,數(shù)據(jù)顯示,未婚人群中流失的比例比已婚人數(shù)高出13%。

plot_bar(input_col='Partner', target_col='Churn', title_name='是否有配偶與是否流失的關(guān)系')

5. 上網(wǎng)時(shí)長

作為文科生,我是如何轉(zhuǎn)行<a href='/map/shujuwajue/' style='color:#000;font-size:inherit;'>數(shù)據(jù)挖掘</a>工程師的 | 附電信用戶實(shí)戰(zhàn)案例

經(jīng)過分析,這方面可以得出兩個(gè)結(jié)論:

  • 用戶的在網(wǎng)時(shí)長越長,表示用戶的忠誠度越高,其流失的概率越低;
  • 新用戶在1年內(nèi)的流失率顯著高于整體流失率,為47.68%。


plot_bar(input_col='tenure_group', target_col='Churn', title_name='在網(wǎng)時(shí)長與是否流失的關(guān)系')

6. 付款方式

作為文科生,我是如何轉(zhuǎn)行<a href='/map/shujuwajue/' style='color:#000;font-size:inherit;'>數(shù)據(jù)挖掘</a>工程師的 | 附電信用戶實(shí)戰(zhàn)案例

支付方式上,支付上,選擇電子支票支付方式的用戶流失最高,達(dá)到45.29%,其他三種支付方式的流失率相差不大。

pd.crosstab(df['PaymentMethod']df['Churn'])

作為文科生,我是如何轉(zhuǎn)行<a href='/map/shujuwajue/' style='color:#000;font-size:inherit;'>數(shù)據(jù)挖掘</a>工程師的 | 附電信用戶實(shí)戰(zhàn)案例

plot_bar(input_col='PaymentMethod', target_col='Churn', title_name='付款方式與是否流失關(guān)系')

7. 月費(fèi)用

作為文科生,我是如何轉(zhuǎn)行<a href='/map/shujuwajue/' style='color:#000;font-size:inherit;'>數(shù)據(jù)挖掘</a>工程師的 | 附電信用戶實(shí)戰(zhàn)案例

整體來看,隨著月費(fèi)用的增加,流失用戶的比例呈現(xiàn)高高低低的變化,月消費(fèi)80-100元的用戶相對(duì)較高。

plot_histogram(input_col='MonthlyCharges', title_name='月費(fèi)用與是否流失關(guān)系')

8. 數(shù)值型屬性相關(guān)性

作為文科生,我是如何轉(zhuǎn)行<a href='/map/shujuwajue/' style='color:#000;font-size:inherit;'>數(shù)據(jù)挖掘</a>工程師的 | 附電信用戶實(shí)戰(zhàn)案例

從相關(guān)性矩陣圖可以看出,用戶的往來期間和總費(fèi)用呈現(xiàn)高度相關(guān),往來期間越長,則總費(fèi)用越高。月消費(fèi)和總消費(fèi)呈現(xiàn)顯著相關(guān)。

plt.figure(figsize=(1510))
sns.heatmap(df.corr(), linewidths=0.1, cmap='tab20c_r', annot=True)
plt.title('數(shù)值型屬性的相關(guān)性', fontdict={'fontsize''xx-large''fontweight':'heavy'})
plt.xticks(fontsize=12)
plt.yticks(fontsize=12)
plt.show()

06、特征選擇

使用統(tǒng)計(jì)檢定方式進(jìn)行特征篩選。

# 刪除tenure
df = df.drop('tenure', axis=1)
from feature_selection import Feature_select
# 劃分X和y
X = df.drop(['customerID', 'Churn'], axis=1)
y = df['Churn']
fs = Feature_select(num_method='anova', cate_method='kf', pos_label='Yes')
x_sel = fs.fit_transform(X, y)


2020 09:30:02 INFO attr select success!
After select attr: ['DeviceProtection''MultipleLines''OnlineSecurity''TechSupport''tenure_group''PaperlessBilling''InternetService''PaymentMethod''SeniorCitizen''MonthlyCharges''Dependents''Partner''Contract''StreamingTV''TotalCharges''StreamingMovies''OnlineBackup']

經(jīng)過特征篩選,gender和PhoneService字段被去掉。

07、建模前處理

python中,為滿足建模需要,一般需要對(duì)數(shù)據(jù)做以下處理:

  • 對(duì)于二分類變量,編碼為0和1;
  • 對(duì)于多分類變量,進(jìn)行one_hot編碼;
  • 對(duì)于數(shù)值型變量,部分模型如KNN神經(jīng)網(wǎng)絡(luò)、Logistic需要進(jìn)行標(biāo)準(zhǔn)化處理。


# 篩選變量
select_features = x_sel.columns
# 建模數(shù)據(jù)
df_model = pd.concat([df['customerID'], df[select_features], df['Churn']], axis=1)
Id_col = ['customerID']
target_col = ['Churn']
# 分類型
cat_cols = df_model.nunique()[df_model.nunique() < 10].index.tolist()
# 二分類屬性
binary_cols = df_model.nunique()[df_model.nunique() == 2].index.tolist()
# 多分類屬性
multi_cols = [i for i in cat_cols if i not in binary_cols]
# 數(shù)值型
num_cols = [i for i in df_model.columns if i not in cat_cols + Id_col]
# 二分類-標(biāo)簽編碼
le = LabelEncoder()
for i in binary_cols:
df_model[i] = le.fit_transform(df_model[i])
# 多分類-啞變量轉(zhuǎn)換
df_model = pd.get_dummies(data=df_model, columns=multi_cols)
df_model.head()

作為文科生,我是如何轉(zhuǎn)行<a href='/map/shujuwajue/' style='color:#000;font-size:inherit;'>數(shù)據(jù)挖掘</a>工程師的 | 附電信用戶實(shí)戰(zhàn)案例

08、模型建立和評(píng)估

首先使用分層抽樣的方式將數(shù)據(jù)劃分訓(xùn)練集和測(cè)試集。

# 重新劃分
X = df_model.drop(['customerID''Churn'], axis=1)
y = df_model['Churn']
# 分層抽樣
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0, stratify=y)
print(X_train.shape, X_test.shape, y_train.shape, y_test.shape)
#修正索引
for i in [X_train, X_test, y_train, y_test]:
i.index = range(i.shape[0])


(5625, 31) (1407, 31) (5625,) (1407,)


# 保存標(biāo)準(zhǔn)化訓(xùn)練和測(cè)試數(shù)據(jù)
st = StandardScaler()
num_scaled_train = pd.DataFrame(st.fit_transform(X_train[num_cols]), columns=num_cols)
num_scaled_test = pd.DataFrame(st.transform(X_test[num_cols]), columns=num_cols)
X_train_sclaed = pd.concat([X_train.drop(num_cols, axis=1), num_scaled_train], axis=1)
X_test_sclaed = pd.concat([X_test.drop(num_cols, axis=1), num_scaled_test], axis=1)

然后建立一系列基準(zhǔn)模型并比較效果。

作為文科生,我是如何轉(zhuǎn)行<a href='/map/shujuwajue/' style='color:#000;font-size:inherit;'>數(shù)據(jù)挖掘</a>工程師的 | 附電信用戶實(shí)戰(zhàn)案例

假如我們關(guān)注roc指標(biāo),從模型表現(xiàn)效果來看,Naive Bayes效果最好。

我們也可以對(duì)模型進(jìn)行進(jìn)一步優(yōu)化,比如對(duì)決策樹參數(shù)進(jìn)行調(diào)優(yōu)。

parameters = {'splitter': ('best','random'),
'criterion': ("gini","entropy"),
"max_depth": [*range(320)],
}
clf = DecisionTreeClassifier(random_state=25)
GS = GridSearchCV(clf, parameters, scoring='f1', cv=10)
GS.fit(X_train, y_train)
print(GS.best_params_)
print(GS.best_score_)


{'criterion''entropy''max_depth': 5, 'splitter''best'}
0.585900839405024

數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼

若不方便掃碼,搜微信號(hào):CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測(cè)極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請(qǐng)參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }