傳智播客旗下品牌:|||||

全國咨詢/投訴熱線:400-618-4000

用戶流失預警項目實戰[大數據培訓]

更新時間:2019年11月08日11時57分 來源:傳智播客 瀏覽次數:

1、項目簡介
當下我們生活的環境中,經常會有各種購物平臺、淘寶平臺、京東平臺等等,我們都是其中的用戶之一,如果咱們長時間不用某一平臺,可能會收到某某平臺的促銷信息,那么平臺為什么給我們發這個消息呢,顯然平臺是經過數據分析,他會分析我們不用這個平臺的可能性有多大(即對于平臺來說流失用戶的可能性有多大),現在拿到某平臺的一組數據,進行建模分析。這里將嘗試使用多種分類器來驗證預測效果。
·數據收集

用戶流失預警
·環境需求
Anaconda3 + pycharm + numpy + pandas + scikitlearn + SVM+RF+KNN
·運行結果
用戶流失預警2
2. 代碼實現

#TODO:流失#1.導包
from __future__ import division
import pandas as pd
import numpy as np
#2。加載數據與觀察數據
churn_df = pd.read_csv('UserDrain_data/churn.csv')
col_names = churn_df.columns.tolist()
# print("Column names:\n",col_names)
# print(churn_df.shape) #(3333, 21)
# Column names:['State', 'Account Length', 'Area Code', 'Phone', "Int'l Plan", 'VMail Plan',
'VMail Message', 'Day Mins', 'Day Calls', 'Day Charge', 'Eve Mins', 'Eve Calls', 'Eve Charge',
'Night Mins', 'Night Calls', 'Night Charge', 'Intl Mins', 'Intl Calls', 'Intl Charge', 'CustServ
Calls', 'Churn?']
to_show = col_names[:6] + col_names[-6:] #6 列與后6 # print(len(to_show))#12 # print ("\nSample data:\n",churn_df[to_show].head(6))
# State Account Length Area Code ... Intl Charge CustServ Calls Churn?
# 0 KS 128 415 ... 2.70 1 False.
# 1 OH 107 415 ... 3.70 1 False.
#2.1 類別編碼
churn_result = churn_df['Churn?']
y = np.where(churn_result == 'True.',1,0)
#2.2 刪除不需要對應列數據
to_drop = ['State','Area Code','Phone','Churn?']
churn_feat_space = churn_df.drop(to_drop,axis=1)
#yes 或者no 需要轉化為布爾類型數據
yes_no_cols = ["Int'l Plan","VMail Plan"]
churn_feat_space[yes_no_cols] = churn_feat_space[yes_no_cols] == 'yes'
# print(churn_feat_space[yes_no_cols])
# Int'l Plan VMail Plan
# 0 False True
# 1 False True
# 獲取數據屬性名
features = churn_feat_space.columns
# print("churn_feat_space:\n",churn_feat_space。head())
# Account Length Int'l Plan ... Intl Charge CustServ Calls
# 0 128 False ... 2.7 1
# 1 107 False ... 3.7 1
#dataframe 轉化為ndarray 數組,同時數組中的元素類型為float 類型
#對應的布爾類型的值,True 1False 0
X = churn_feat_space.as_matrix().astype(np.float)
np.set_printoptions(threshold=np.NaN)
# print("churn_feat_space.as_matrix().astype(np.float):\n",X)
# [[128。 0。 1。。。。 3。 2。7 1。]
# [107. 0. 1.... 3. 3.7 1.]
# 2。3 數據標準化
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X = scaler.fit_transform(X)
# print("Feature space holds %d observations and %d features" % X.shape) #3333 17 # Feature space holds 3333 observations and 17 features
# print("Unique target labels:", np。unique(y))# [0 1]
# print(X[0])
#標準化之后的第一行數據
#[ 0。67648946 -0。32758048 1。6170861 1。23488274 1。56676695 0。47664315
# 1。56703625 -0。07060962 -0。05594035 -0。07042665 0。86674322 -0。46549436
# 0.86602851 -0.08500823 -0.60119509 -0.0856905 -0.42793202]
# print(len(y[y == 0])) #2850
#3.KFold K 折交叉驗證
from sklearn.cross_validation import KFold
def run_cv(X,y,clf_class,**kwargs):
#創建kfold 對象
kf=KFold(len(y),n_folds=5,shuffle=True)
y_pred=y.copy()
#迭代
count=0
for train_index,test_index in kf:
count=count+1
#y 對應的標簽數量:3333
# print("train_index 數量:",len(train_index)) #train_index 數量: 2666
# print("test_index 數量:", len(test_index)) # test_index 數量: 667
# print(test_index)
X_train,X_test=X[train_index],X[test_index]
y_train=y[train_index]
#初始化一個分類器模型
clf=clf_class(**kwargs)
clf.fit(X_train,y_train)
y_pred[test_index] = clf.predict(X_test)
# print("迭代次樹:", count)#5
return y_pred
#4.建模
from sklearn.svm import SVC
from sklearn.ensemble import RandomForestClassifier as RF
from sklearn.neighbors import KNeighborsClassifier as KNN
def accuracy(y_true,y_pred):
# NumPy interprets True and False as 1. and 0.
return np.mean(y_true == y_pred)
#4.1 SVM / RF /KNN 三種算法預測準確率
print("Support vector machines:","%.3f" % accuracy(y, run_cv(X,y,SVC)))
print("Random forest:","%.3f" % accuracy(y, run_cv(X,y,RF)))
print("K-nearest-neighbors:","%.3f" % accuracy(y,run_cv(X,y,KNN)))



推薦了解:傳智播客大數據課程

javaee

python

web

ui

cloud

test

c

netmarket

pm

Linux

movies

robot

uids

北京校區

    14天免費試學

    基礎班入門課程限時免費

    申請試學名額

    15天免費試學

    基礎班入門課程限時免費

    申請試學名額

    15天免費試學

    基礎班入門課程限時免費

    申請試學名額

    15天免費試學

    基礎班入門課程限時免費

    申請試學名額

    20天免費試學

    基礎班入門課程限時免費

    申請試學名額

    8天免費試學

    基礎班入門課程限時免費

    申請試學名額

    20天免費試學

    基礎班入門課程限時免費

    申請試學名額

    5天免費試學

    基礎班入門課程限時免費

    申請試學名額

    0天免費試學

    基礎班入門課程限時免費

    申請試學名額

    12天免費試學

    基礎班入門課程限時免費

    申請試學名額

    5天免費試學

    基礎班入門課程限時免費

    申請試學名額

    5天免費試學

    基礎班入門課程限時免費

    申請試學名額

    10天免費試學

    基礎班入門課程限時免費

    申請試學名額
    网赚论坛靠谱吗 有没有什么靠谱的网赚 内蒙古11选5走势图 网赚教程 2019最新网赚工具 2019年最新网赚方法 利来彩票开户 19年点击网赚 有哪些靠谱的网赚平台 如何网赚