基於公布的新冠病毒確診患者病例,進行文字特徵提取與描述統計分析。
資料形式:
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
f = open(r'----你的路徑----\新發地.txt', encoding='utf-8')
data =
for line in f.readlines():
# line = line.split(',') # 基於逗號將文字處理成list
cid = line.split(',')[0].replace('病例', '') # 獲取病歷號
gender = line.split(',')[1].replace('某', '') # 用空格代替「某」這個字
# 資料存在不規範,年齡並非都在第四位,不能用位置索引獲得年齡,但年齡後面都跟著「歲」
age = line.split('歲,')[0].split(',')[-1] # 年齡在最後一位
# 獲得該患者的地區,位址只保留到省級單位,取字串的前兩位
reg = line.split('人,')[0].split(',')[-1][0:2]
# 提取患者的臨床分型
c_type = line.split('臨床分型為')[1].replace('。', '').replace('\n', '')
data = pd.dataframe(data)
data.columns = ['cid', 'gender', 'age', 'reg', 'c_type']
# 以下三行**是解決pandas輸出時, 表頭不能對齊的方法
pd.set_option('display.unicode.ambiguous_as_wide', true)
pd.set_option('display.unicode.east_asian_width', true)
pd.set_option('display.width', 180) # 設定列印的寬度
# print(data)
# 將患者根據年齡分組
data.age = pd.to_numeric(data.age)
data.age = np.floor(data.age/10)*10
print(data)
df = data.groupby('age') # 按性別分組
freq = df.size()
print(df.size()) # 統計資料
# 根據年齡組畫圖
sns.barplot(freq.index, list(freq))
plt.show()
文字特徵提取結果(部分輸出):
年齡分組統計結果:
繪圖:
提取病毒潛伏期:
import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
f = open(r'-----你的路徑------\新發地2.txt', encoding='utf-8')
data = # 存放潛伏期
# 提取日期
for line in f.readlines():
txt = line
txt = txt.replace(',', ',') # 中文的逗號改為英文的逗號
txt = txt.replace('、', ',') # 中文的頓號改為英文的逗號
txt = txt.replace('。', ',') # 中文的頓號改為英文的逗號
txt = txt.split(',') # 應英文逗號將文字分割開
txt = [each for each in txt if '日' in each] # 將含有'日'關鍵字的留下來
txt = [each.split('日')[0] for each in txt] # 將資料按照'日'進行分割
# 按'日'分割會有一些資料不規範,在資料量少的時候可手動處理
# 以下四行為資料處理
txt = [each.replace('患者', '') for each in txt] # 處理掉患者關鍵字
txt = [each.split('月')[-1] for each in txt]
txt = [each.replace('自述', '') for each in txt]
txt = [each.replace('為', '') for each in txt]
# 通過日期差值判斷期間
time = 0
if len(txt) >= 2:
txt = pd.to_numeric(txt)
time = np.max(txt)-np.min(txt)
plt.hist(data) # 直方圖
plt.show()
輸出結果:
希望疫情早些過去,大家健健康康!
文字特徵提取
注 翻譯自 scikit learn 的 user guide 中關於文字特徵提取部分。文字分析是機器學習的一大應用領域,但是長度不一的字串行是無法直接作為演算法的輸入。為了解決這個問題,scikit learn 提供了幾個常用的文字特徵提取的方法 在這個框架下,特徵和樣本定義為 如此,乙個預料庫可...
文字特徵 特徵提取(一)
本文的內容主要來自於quora上的乙個問題,這裡簡單的做一下總結,感興趣的可檢視原帖 為了使用機器學習方法處理文字資料,需要找到適合的文字表示形式,對於傳統機器學習方法而言,常用的一種表示方法是將文件轉換為文件 詞項矩陣 document term matrix 具體就是將多篇文件轉換為資料幀 da...
特徵選擇與特徵提取
一 特徵選擇和特徵提取 特徵選擇 feature selection 和特徵提取 feature extraction 都屬於降維 dimension reduction 這兩者達到的效果是一樣的,就是試圖去減少特徵資料集中的屬性 或者稱為特徵 的數目 但是兩者所採用的方式方法卻不同。特徵提取的方法...