第一步:分析設計
第二步:資料收集
酒店資料:
第三步:資料處理
資料清洗(在統計分析裡面至少150條以上的資料)
特徵工程
import pandas as pd
data = pd.read_sql(sql, conn)
# 去除標籤列所對應的缺失值,可以使用花式索引的方式,對於資料進行相應的清洗和替換
(2)開始分詞----cut
# print(comment)
# (2)開始分詞----cut
list_word = # 建立空列表用來接收相應的結果
for i in comment:
a = list(jieba.cut(i)) # 按照列表的方式進行相應的分詞
# tf-idf 特徵抽取
from sklearn.feature_extraction.text import tfidfvectorizer
tf = tfidfvectorizer() # 呼叫tf-tdf分詞演算法,將文字轉化為頻率
data1 = tf.fit_transform(list_word) # 先擬合,再轉換,得出乙個稀疏矩陣
第四步:資料分析
對因變數(住客評分)進行相應的分類
分類**
bq =
for i in data['評分']: # 初始的分類級別
if float(i) <= 0:
elif 0 < float(i) <= 1:
elif 1 < float(i) <= 2:
elif 2 < float(i) <= 3:
elif 3 < float(i) <= 4:
else:
劃分資料集
(1)找到相對應的特徵(自變數)x,標籤y(因變數)
x = data2
y = bq
(2)劃分相應的訓練集和測試集,其中訓練集為80%,測試集為20%
# 劃分資料集
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, random_state=0)
(3)對資料進行標準化(將自變數的資料進行相應的標準化處理,可以使得某乙個特徵不會對總的結果產生較大影響)
# 對資料進行標準化處理
from sklearn.preprocessing import standardscaler
ss = standardscaler()
# print(ss.fit_transform(x_train)) # 標準化後,有的值為正,有的值為負
x_train = ss.fit_transform(x_train)
x_test = ss.fit_transform(x_test)
數學建模-樸素貝葉斯分類演算法
**打分可以將客戶評價分級,(分級的結果acc準確率要求比較高)
進一步:分級後,將不同等級的使用者,單獨提取出來,按照**的打分結果,產生新的一列
按照**評分結果,按照**結果的不同等級,將整個資料劃分為三個級別,需進一步考慮
對於不同級別的顧客,可以考慮做相應的評價畫像
同樣可以考慮做顧客畫像
**實現
from sklearn.*****_bayes import gaussiannb # 用於處理有正有負的資料
nb = gaussiannb() # 因為稀疏矩陣標準化後的值很可能是負值
nb.fit(x_train, y_train) # 擬合相應的訓練集
x_predict = nb.predict(x_test) # 放入相應的測試集進行分類
t_predict = nb.predict(x_train) # 放入相應的訓練集進行分類
score_1 = nb.score(x_train, y_train) # 使用對應的訓練集測試一下評估的acc
score_2 = nb.score(x_test, y_test)
print(score_1, score_2)
模型的準確性
模型調優
可以考慮分類級別過多
我們是對酒店進行分類,一般我們對酒店的評價是差、一般、好;但是我們之前是劃分了5個等級,我們考慮一下是否分類過度,導致模型acc過低?嘗試降低分類數
縮小分類級別
for i in data['評分']:
if float(i) <= 2:
elif 2 < float(i) <= 4:
else:
相比與上圖的數學模型acc而言,本次的訓練集數學模型acc提高了近1個百分點 ,測試集數學模型acc基本一致
修改訓練集(70%)與測試集(30%)的佔比
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3, random_state=0)
相比上圖的數學模型acc而言,本次訓練集的數學模型acc提高近2個百分點,測試集的數學模型acc提高近0.8個百分點
我們發現我們建立的數學模型的acc依舊不是很理想,所有我們得進一步考慮提高模型的acc。那麼問題來了,我們如何再提高模型的acc?
當然是再次把目光回歸到資料本身,提高提取新的特徵來篩選高質量的資料
增加特徵,重新篩選資料
此時我們發現,我們的數學模型的acc非常好
第五步:資料視覺化
第六步:報告撰寫
酒店評論預處理程式
def corpus content corpus path,seg path catelist os.listdir corpus path 獲取corpus path下所有的子目錄 print catelist catelist with open seg path,w encoding utf...
酒店情感分析
對於預料集,可以從這個資料堂拿資料 其中關於酒店情感資料分析部分 data shop page.html?k e9 85 92 e5 ba 97 e6 83 85 e6 84 9f 對於酒店情感分析,很重要的一點就是語料庫要好,同時,分詞時需要的有好的情感詞庫,這樣才能得到更好的分詞結果。在得到好的...
scrapy爬取酒店評論資料
總共有28w條記錄。資料來源 www.booking.com 具體 設定一條記錄有如下字段 用csv檔案儲存with seperator t hotel review booking hotel data資料檔案 hotel review booking scrapy理解的專案目錄 hotel re...