import pandas as pd
import numpy as np
#讀取訓練資料集
#生成keyword資料
mblog[
'keywords'
]= mblog.
(get_keywords,axis=
1)
#匯入邏輯回歸模型
from sklearn.linear_model import logisticregression
from sklearn.feature_extraction.text import countvectorizer
vectorizer = countvectorizer(max_features=
2000
,analyzer=
'word'
,tokenizer=
lambda s:s.split(
'|')
)#生成詞袋向量資料
blog_bow = vectorizer.fit_transform(mblog[
'keywords'])
#選定訓練樣本資料
y = mblog[mblog[
'attitude'
].notnull()]
['attitude'
]x=blog_bow[
:len
(y),:]
#訓練模型並檢視訓練準確率
lr_model = logisticregression(random_state=
0,solver=
'lbfgs'
,multi_class=
'multinomial'
).fit(x,y)
lr_model.score(x,y)
# 0.99
# 對其他微博進行**並檢視結果
print
(mblog.chinese_text.iloc[8]
)print
(lr_model.predict(blog_bow[8,
:]))
華為mate30保護殼**,感覺好醜啊
[0.]
在訓練樣本中該條微博被人工標註為-1:消極
但模型在**時將其標註為0:中性
#檢視訓練資料各種態度的分布情況
import matplotlib.pyplot as plt
plt.rcparams[
'font.sans-serif']=
['simhei'
]#用來正常顯示中文標籤
%matplotlib inline
predict_attitude = pd.dataframe(lr_model.predict(blog_bow[:,
:]),columns=
['predict'])
plt.figure(figsize=[15
,5])
plt.subplot(1,
2,1)
labels =
['消極'
,'中立'
,'積極'
]plt.title(
'訓練資料各種態度的分布情況'
)mblog.groupby(
'attitude'
).size(
).plot.pie(labels=labels,autopct=
'%1.1f%%'
,explode=
(0.05
,0.05
,0.05
),shadow=
true
)plt.subplot(1,
2,2)
labels =
['消極'
,'中立'
,'積極'
]plt.title(
'全部**結果的態度分布情況'
模型分析:
根據**的多個微博資料結果,模型把大部分微博都**為了積極的,分析資料的特點,推測可能是由於資料的分布極不均勻導致的
檢視各種態度的分布情況可驗證這一推測。
自嗨筆記 2 微博疫情輿情分析 輿情分析部分
previously!自嗨筆記 1 微博疫情輿情分析 爬取部分 二 建立需求 利用snownlp,情感分析 嘗試利用已有資訊,挖掘深度規律 三,實現 def snownlp c element try sn snownlp element return round sn.sentiments,1 e...
python酒店評論分析 酒店輿情分析
第一步 分析設計 第二步 資料收集 酒店資料 第三步 資料處理 資料清洗 在統計分析裡面至少150條以上的資料 特徵工程 import pandas as pd data pd.read sql sql,conn 去除標籤列所對應的缺失值,可以使用花式索引的方式,對於資料進行相應的清洗和替換 2 開...
輿情分析與影響的經驗記錄一
1.先講下httpwebrequest的使用。關於httpwebrequest的使用,網上一搜就是一大堆。我這要寫的主要是我自己使用的經驗。我就一直在找原因,使用除錯一步一步的走,但是都沒有問題。隨後我又想是不是發帖的速度太快了,就加了thread.sleep 來減緩下發帖的速度。結果還是不行。最後...