python實戰(zhàn)-唐宇迪

X[:,0]是numpy中數(shù)組的一種寫法,取數(shù)組的索引,表示對一個二維數(shù)組,取該二維數(shù)組第一維中的所有數(shù)據(jù),第二維中取第0個數(shù)據(jù),直觀來說,X[:,0]就是取所有行的第0列個數(shù)據(jù), X[:,1] 就是取所有行的第1列個數(shù)據(jù)。

temp.index = temp.pop("date")?????temp.pop原有列字段的數(shù)據(jù)挪出來 做索引

insert()方法語法:list.insert(index, obj)????參數(shù)? index -- 對象 ????obj 需要插入的索引位置。????obj -- 要插入列表中的對象。

resharp(1,-1)樣本轉(zhuǎn)化成行向量形式 -1是推斷操作

[axis=0代表列,axis=1代表行

KMeans(n_clusters=2,random_state=1)?n_clusters樣本分幾堆??random_state使每次隨機結(jié)果保持一致

例: loc[n]表示索引的是第n行(index 是整數(shù)) loc[‘d’]表示索引的是第’d’行(index 是字符) 2.?.iloc ? :通過行號獲取行數(shù)據(jù),不能是字符 3. ?ix——結(jié)合前兩種的混合索引

np.random.seed 設(shè)置相同的seed,則每次生成的隨機數(shù)也相同,如果不設(shè)置seed,則每次生成的隨機數(shù)都會不一樣

umpy.random中shuffle與permutation的區(qū)別????????函數(shù)shuffle與permutation都是對原來的數(shù)組進行重新洗牌(即隨機打亂原來的元素順序);區(qū)別在于shuffle直接在原來的數(shù)組上進行操作,改變原來數(shù)組的順序,無返回值。而permutation不直接在原來的數(shù)組上進行操作,而是返回一個新的打亂順序的數(shù)組,并不改變原來的數(shù)組。

邏輯回歸 from sklearn.linear_model import LogisticRegression? ? ? ?函數(shù)? predict????predict_proba

以及三種括號如何使用,如何表示矩陣:1.小括號:表示一個tutle元組,這是一個不可更改的數(shù)據(jù)表示,只能讀取? 2.中括號:定義一個list列表,這里注意不能用list來表示我們常說的“數(shù)組”,數(shù)組的定義需要用到numpy,例如你定義一個變量:a=[[1,2,3],[4,5,6],[7,8,9]]這也只是表示a是個元素的list變量的list,不可以用a[:,:]的形式來提取值,而可以使用a[0][1]這樣的形式。但是,數(shù)據(jù)的尋找是逐步的,所以a[:][1]和a[1][:]是用一種結(jié)果3.大括號:代表dict字典數(shù)據(jù)類型,字典是由鍵對值組組成。冒號':'分開鍵和值,逗號','隔開組。

print titanic.describe() 查看所有特征

unique 某一特征下的屬性詳細包含

from sklearn.cross_validation import KFold 交叉驗證

from sklearn.feature_selection import SelectKBest, f_classif選出哪個特征最重要

value_counts 特征值得個數(shù)統(tǒng)計

len() 方法返回列表元素個數(shù) 樣本個數(shù)

unique

roc_curve

roc_auc_score

reset_index

cross_val_score

groupby

scatter_plot_by_category

drop參數(shù)

get_dummies

notnull

isnull

logspace

np.concatenate

columns.tolist() 查看特征所有名

交叉驗證

shuffled 重新洗牌

5 numpy 用于做矩陣 excel行和列就是矩陣

一維表,就是在工作表數(shù)據(jù)區(qū)域的頂端行為字段名稱(標(biāo)題),以后各行為數(shù)據(jù)(記錄),并且各列只包含一種類型數(shù)據(jù)的數(shù)據(jù)區(qū)域。維表每個數(shù)據(jù)都只有一個對應(yīng)值,而二維表每個數(shù)據(jù)有兩個對應(yīng)值。每一列都是獨立的參數(shù)那就是一維表,如果每一列都是同類參數(shù)那就是二維表。為了后期更好地創(chuàng)建各種類型的數(shù)據(jù)透視表,強烈建議用戶在數(shù)據(jù)錄入時,采用一維表形式的數(shù)據(jù)錄入,避免采用二維表的形式對數(shù)據(jù)進行錄入。

numpy中一維數(shù)組用一個中括號 二維用兩個

變量.shap 看數(shù)組的結(jié)構(gòu)

np.genformtxt 打印出表格每一行數(shù)據(jù)

取一行的其中一個數(shù)據(jù)? 變量名[1,4]? 取所有列[:1] 所有行 第一列??[:0:2] 取0和2兩列? print(變量拍[suoyin==10]) 打印出array的布爾值


找出等于25的行數(shù)據(jù)。。

7????變量名.astype(float)? 改變數(shù)據(jù)類型? ? 矩陣求和 matrix.sum(axis=1)代表行

8? ? 矩陣變換?


向量變成矩陣

.size 矩陣中有多少數(shù)值? np.zeros((3,4)) 初始化為0的矩陣??np.ones((2,3,4))?都為一的3維矩陣。np.random.random(2,3)調(diào)用random模塊下的random函數(shù)? ? np.linespace 隨機造數(shù)


每個數(shù)值做一個平方操作。

np.range(10,30,5)?范圍。起點為10,終點為30間隔為五。。

9? ? a.ravel 矩陣變成向量

10.不同復(fù)制操作對比

11 pandas 數(shù)據(jù)處理應(yīng)用? ?print(變量名.columns)

? ? 12? print(變量名.loc[0]) 取第一行第零個數(shù)據(jù)。 loc[4:3]? ? 取列的數(shù)據(jù)。print(變量名[“列名”])用列名進行定位。增加列以及數(shù)值重要。 新建列變量名["新列名"]

? ? 13? ???tainan["age"][age_is_null==false]? 去掉缺失值,提出有值的項


row_index_83_age??第83個樣本值是多少?。

14?? ? 剔除缺失值? good_ages = titanic_survival["Age"][age_is_null == False]

pivot_table量與其他量關(guān)系的函數(shù)?index以誰為基準(zhǔn)?aggfunc統(tǒng)計與什么之間的關(guān)系? ?aggfunc統(tǒng)計兩個之間的什么關(guān)系 不寫表示求均值? ??? ?port_stats = titanic_survival.pivot_table(index="Embarked", values=["Fare","Survived"], aggfunc=np.sum)

print(port_stats)

15 apply自定義函數(shù) 功能未提供 所以自己寫的函數(shù) titanic_survival.apply(not_null_count)??

統(tǒng)計哪一列有空值個數(shù)? ?pd.isnull(column)

28?三個特征之間用直方圖。特征與特征之間用散點圖。

35?有監(jiān)督學(xué)習(xí)。分類問題。分類貓和狗。做法要執(zhí)行的時候有一個標(biāo)簽紙。貓和狗分別打標(biāo)簽是有監(jiān)督的學(xué)習(xí)。摸個狗混在一起,要分類出來是無監(jiān)督學(xué)習(xí)。最終預(yù)測出一個具體的值就是回歸。分類是一和零的問題。是有還是無

35-38線性回歸推導(dǎo)。x1 x2代表工資和年齡兩個特征。Θ1Θ2是對x1x2的影響程度。hΘ銀行最終會借多少錢?由x1x2決定。X1x2由Θ1Θ2決定 相當(dāng)于wx+b。??Θ0?轉(zhuǎn)換成矩陣格式 變成增加一個列為1的特征值。公式化轉(zhuǎn)后x是列向量。Θ轉(zhuǎn)制是行向量。行與列相乘得hΘ值。 y是標(biāo)簽值。

np.linalg.inv() 矩陣求逆?mat=x.T.dot(...)是先求這個3*3矩陣的轉(zhuǎn)置(.T),再求與點積(.dot)點積就是矩陣各個對應(yīng)元素相乘, 這個時候要求兩個矩陣必須同樣大小。

https://zhidao.baidu.com/question/811675877155828172.html

39?邏輯回歸。做一個分類任務(wù)。sigmod把特征值轉(zhuǎn)化成零到一區(qū)間的概率紙。


40梯度下降。一個最優(yōu)化算法,梯度下降的方向就是用負梯度方向為搜索方向,沿著梯度下降的方向求解極小值。

https://blog.csdn.net/chengqiuming/article/details/80187824


Θ0截距?Θ1斜率

41-46決策樹? 為達到目標(biāo)定出的條件,選擇其概率的優(yōu)先度。

?解決分類問題和回歸問題 如:是否相親成功 熵:表集合的混亂程度 ????gini系數(shù):信息增益率=信息增益/自身的熵值 率值越高越好

H(T) 葉子節(jié)點的熵值 Nt 葉子節(jié)點的樣本數(shù) (權(quán)重值)gini也相當(dāng)于熵值

決策樹(Decision Tree)是在已知各種情況發(fā)生概率的基礎(chǔ)上,通過構(gòu)成決策樹來求取凈現(xiàn)值的期望值大于等于零的概率,評價項目風(fēng)險,判斷其可行性的決策分析方法,是直觀運用概率分析的一種圖解法??決策樹是一個預(yù)測模型,他代表的是對象屬性與對象值之間的一種映射關(guān)系。其中每個內(nèi)部節(jié)點表示一個屬性上的測試,每個分支代表一個測試輸出,每個葉節(jié)點代表一種類別。是監(jiān)督學(xué)習(xí)就是給定一堆樣本,每個樣本都有一組屬性和一個類別,這些類別是事先確定的,那么通過學(xué)習(xí)得到一個分類器,這個分類器能夠?qū)π鲁霈F(xiàn)的對象給出正確的分類。

不同決策樹算法的劃分方法。

ID3系列算法:使用信息熵作為集合純度的評估??信息增益的缺點是傾向于選擇取值較多是屬性,在有些情況下這類屬性可能不會提供太多有價值的信息。 ID3算法只能對描述屬性為離散型屬性的數(shù)據(jù)集構(gòu)造決策樹 。

CART算法:使用GINI系數(shù)作為集合純度的評估

https://www.sohu.com/a/208748892_716346

https://www.sohu.com/a/155545922_609133

https://blog.csdn.net/ruggier/article/details/78756447

46?決策樹剪枝。防止過擬合 樣本數(shù)少特征數(shù)多容易過擬合? ?方法:預(yù)剪枝 后剪枝? ? ?47隨機森林模型。解決決策樹的過擬合現(xiàn)象? 48決策樹參數(shù)。交叉驗證

49-53貝葉斯推導(dǎo)及實例。

54-59?????支持向量機

61至75。K近鄰,三基本要素:K值的選擇,距離度量,分類決策。


image轉(zhuǎn)化成數(shù)據(jù)XxYxZ,W找一些權(quán)重參數(shù),得出每個類的得分


超參數(shù)。交叉驗證。得分函數(shù)。損失函數(shù)。正則化懲罰項。懲罰權(quán)重不均勻的項

softmax分類器。



exp 做e的x次冪 放大數(shù)值 突出好壞特征明顯 再做標(biāo)準(zhǔn)化 變概率值?

sigmod函數(shù)。梯度下降。

過程:x值通過w參數(shù)得到得分值 ,再e的x次冪做歸一。得到類別概率值。就可求loss值。就可進行最優(yōu)化。x到loss的過程就是顯像傳播的過程

學(xué)習(xí)率。反向傳播。

由loss往回傳 算什么樣的w值該更新 更新多大。最優(yōu)化是在反向傳播中體現(xiàn)出來的。反向傳播中最重要的。就是更新權(quán)重參數(shù)。。

神經(jīng)網(wǎng)絡(luò)。激活函數(shù)。如果實例中。線性函數(shù)分不開樣本點。要是用激活函數(shù)來分。sigmod? ? ? ? ? ? ?digw3[sig w2[sig[w,x1]]]??但是是sigmod會產(chǎn)生梯度消失。所以被淘汰了這個用法。relu替換。

過擬合。w值內(nèi)部神經(jīng)元數(shù)據(jù)無法展現(xiàn)出。神經(jīng)元就相當(dāng)于w參數(shù)個數(shù)。導(dǎo)致訓(xùn)練與測試與相差很大。λ (lambda)?鄭則懲罰項。解決過擬合問題。


數(shù)據(jù)預(yù)處理。


W不能用鈴鐺初始。b用零做初始化是可以的。

權(quán)重初始化。dropout。

x作為全連接操作。容易出現(xiàn)過擬合。dropout每次只貸60%。隨機選取??山档瓦^擬合風(fēng)險。

卷積神經(jīng)網(wǎng)絡(luò)。

76-81 xgboost?

使用多顆樹 用不同的特征 每個相當(dāng)于一個分類七。每家一棵樹需要效果得到提升。。。。每個葉子節(jié)點給予的分值。最后將相同葉子結(jié)點的得分值相加。不能讓葉子結(jié)點個數(shù)更多。加入懲罰項損失函數(shù)。


目標(biāo)函數(shù)。

82 adaboost

83至86。自然語言處理。

88 softmax

89 90cbow

91?梯度上升。

92負采樣。

95無監(jiān)督學(xué)習(xí)

95,96 kmeans

97-98 k近鄰算法

98

99-100 kca

101 102svd

?dot()函數(shù)是矩陣乘,而*則表示逐個元素相乘一

52郵件過濾


73

小寫的θ是:數(shù)學(xué)上常代表平面的角

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

實例

104? ?lr = LinearRegression()????lr.fit(cars[["weight"]], cars["mpg"])???lr.fit(inputs,outut)inputs:原數(shù)據(jù)轉(zhuǎn)換成fit格式的矩陣,行是樣本 列是每一個特征? output標(biāo)簽值

實例??lr = LinearRegression()?? ?①lr.fit(X, y, sample_weight=None)? ②predictions = lr.predict(X)

對模型預(yù)測好壞的評估? 用均方誤差法 (預(yù)測值-真實值)**2

mse = mean_squared_error(cars["mpg"], predictions)????rmse = mse ** (0.5)??mean_squared_error(預(yù)測值,真實標(biāo)簽值) 標(biāo)簽值:預(yù)測的參考

105 邏輯回歸

兩步 Wx算出得分值S,再轉(zhuǎn)換成正數(shù)值。再壓縮到0-1的區(qū)間上。(W權(quán)重參數(shù) x特征值)

from sklearn.linear_model import LogisticRegression????logistic_model = LogisticRegression()????logistic_model.fit(admissions[["gpa"]], admissions["admit"])? ? 計算概率值? ?pred_probs = logistic_model.predict_proba(admissions[["gpa"]]) 想查看表

106如何評判模型

print(predicted_label.value_counts())??value_counts確認數(shù)據(jù)出現(xiàn)的頻率。? ??

預(yù)測值==真實值 那么就是預(yù)測對了 求精度概率值accuracy = len(correct_predictions) / float(len(admissions))? ?但精度預(yù)測也不靠譜 所以。。。

以上公式表示檢測模型正類效果


檢測負例效果

true_positive_filter = (admissions["predicted_label"] == 1) & (admissions["actual_label"] == 1)????true_positives = len(admissions[true_positive_filter])???

?false_negative_filter = (admissions["predicted_label"] == 0) & (admissions["actual_label"] == 1)????false_negatives = len(admissions[false_negative_filter])

sensitivity = true_positives / float((true_positives + false_negatives))? 檢驗正類的效果有多少????0.127049180328 100人88人應(yīng)該被錄取 但模型沒給錄取

0.9625負類檢測效果好 應(yīng)該被拒 實際也被拒

107??

admissions["actual_label"] = admissions["admit"] 創(chuàng)建actual_label列 ,值采用admit的值? ?

admissions = admissions.drop("admit", axis=1)刪除damit列?axis索引為1

#返回一個新的打亂順序的數(shù)組() 元數(shù)據(jù)可能以升序等方式排列 )shuffled_index = np.random.permutation(admissions.index)??permutation返回index值

#劃分測試數(shù)列集? train = shuffled_admissions.iloc[0:515]? ? ?接下來用劃分的數(shù)據(jù)集來訓(xùn)練測試? model.fit(train[["gpa"]], train["actual_label"])????labels = model.predict(test[["gpa"]])? ? ? ? 如果訓(xùn)練測試結(jié)果相差大 就是過擬合

probabilities = model.predict_proba(test[["gpa"]])? predict_proba求預(yù)測的概率值? #roc_curve曲線? fpr, tpr, thresholds = metrics.roc_curve(test["actual_label"], probabilities[:,1])?參數(shù)實際值,預(yù)測的概率值????thresholds 預(yù)值??fpr, tpr要求圖形的面積越大預(yù)測效果越好????????????#求曲線面積值? auc_score = roc_auc_score(test["actual_label"], probabilities[:,1])

108 交叉驗證

admissions.ix[0:128, "fold"] = 1? 數(shù)據(jù)切5份? 自動建立個新列?fold=1表第一個塊的數(shù)據(jù)

kf = KFold(len(admissions), 5, shuffle=True, random_state=8)

lr = LogisticRegression()

#cross_val_score交叉驗證,返回驗證一個結(jié)果 參數(shù)lr加載一個模型,加載數(shù)據(jù),標(biāo)簽,返回的結(jié)果可以是精度值accuracies或面積值roc_auc等等,cv要求幾倍的交叉驗證

kf = KFold(len(admissions), 5, shuffle=True, random_state=8)? len(admissions)=n樣本個數(shù)? 切分塊數(shù)=5? ? ?accuracies = cross_val_score(lr,admissions[["gpa"]], admissions["actual_label"], scoring="roc_auc", cv=kf)? ? ?cross_val_score交叉驗證??admissions[["gpa"]]=data? ?admissions["actual_label"]=label??scoring="roc_auc"=返回的結(jié)果 也可以用精度accuracy

109?回歸用在多類別問題上? 轉(zhuǎn)成多個2分類問題? 方法:把一個特征用多維度列形式表示

dummy_cylinders = pd.get_dummies(cars["cylinders"], prefix="cyl")??cars["cylinders"]要使用的特征咧?prefix起名為cyl? ?cars = pd.concat([cars, dummy_cylinders], axis=1)??concat把元數(shù)據(jù)連接在一起

highest_train_row = int(cars.shape[0] * .70)70%做測試集train =shuffled_cars.iloc[0:highest_train_row]

將數(shù)據(jù)拿到手?unique_origins = cars["origin"].unique()? ?再聽吧

110??print (kobe.shape)數(shù)據(jù)總數(shù)??kobe = raw[pd.notnull(raw['shot_made_flag'])]??notnull不為空的列都保留下?????print(kobe.action_type.unique())打印某特征值中包含的多個屬性????print(kobe.shot_type.value_counts())每個屬性的個數(shù)

112? 數(shù)據(jù)預(yù)處理? 對機器無法是別的特征值轉(zhuǎn)換??raw['season'] = raw['season'].apply(lambda x: int(x.split('-')[1]) )????????lambda 寫命名函數(shù) 對數(shù)值切分??

pd.DataFrame({'matchup':kobe.matchup, 'opponent':kobe.opponent})? 傳進2個列 起名matchup

plt.scatter(raw.dist, raw.shot_distance, color='blue')兩個特征完全正相關(guān)? 只取一個做特征就好

蘭浩特get_dummies 分多類屬于的為1 不屬于的為0 pd.get_dummies(raw['combined_shot_type'], prefix='combined_shot_type')[0:2]? ?combined_shot_type起前綴名?

隨機森林?range_n參數(shù) 要構(gòu)造多少棵樹 不知道 先取一個范圍?range_m樹的深度 不過擬合選多少一個個試rfc = RandomForestClassifier(n_estimators=n)

115 tatanic 數(shù)據(jù)預(yù)處理??

print (titanic.describe()) 查看所有數(shù)據(jù) 缺失值填充 取均值?titanic["Age"] = titanic["Age"].fillna(titanic["Age"].median())??fillna 函數(shù)? ?填充方法median()? ? ? ? ?字符串的量值轉(zhuǎn)成數(shù)字0,1? ?titanic.loc[titanic["Sex"] == "male", "Sex"] = 0

116預(yù)測? ? 先提取特征 做交叉驗證? 訓(xùn)練。? ?想知道某人是否獲救? ?predictions[predictions > .5] = 1? 預(yù)測與真實值相等的個數(shù)? ?accuracy = sum(predictions[predictions == titanic["Survived"]]) / len(predictions)? ??0.787878787879? 精準(zhǔn)度78%? ?用邏輯回歸得出概率值結(jié)果兩者差不多

117 用回歸做比較初級 ,接下來用隨機森林 參數(shù)調(diào)優(yōu)要多花費時間 當(dāng)數(shù)據(jù)調(diào)整不上去了 就換或增加一些數(shù)據(jù)特征??

118衡量挑選有價值的特征

from sklearn.feature_selection import SelectKBest, f_classif 基于SelectKBest庫操作????????selector = SelectKBest(f_classif, k=5)????#"Survived" 作為label值,衡量重要性selector.fit(titanic[predictors], titanic["Survived"])??

用多分類器去做 看看效果好的比例

algorithms = [[GradientBoostingClassifier(random_state=1, n_estimators=25, max_depth=3), ["Pclass", "特征項",]],? ? ? ? [LogisticRegression(random_state=1), ["Pclass", "特征項"]]]

分別作訓(xùn)練和測試 再把兩個預(yù)測值取平均test_predictions = (full_test_predictions[0] + full_test_predictions[1]) / 2

119 案例還款率分類任務(wù)??count_classes = pd.value_counts(data['Class'], sort = True).sort_index()圖表查看兩類的比例??樣本不均衡解決方案 過采樣(少的增多)和下采樣(多的減少)

先要將特征分布差異調(diào)整到差不多不能有的1,有的400? 所以?from sklearn.preprocessing import StandardScaler? 在preprocessing預(yù)處理模塊導(dǎo)入StandardScaler 標(biāo)準(zhǔn)化模塊??

data['normAmount'] = StandardScaler().fit_transform(data['Amount'].reshape(-1, 1))

data = data.drop(['Time','Amount'],axis=1)? ??fit_transform對數(shù)據(jù)進行變換??reshape(-1, 1)? -1讓模塊自己去猜 自動識別? 操作后加入新特征normAmount

121 下采樣X = data.ix[:, data.columns != 'Class']? y = data.ix[:, data.columns == 'Class'] 數(shù)據(jù)做切分?????????number_records_fraud = len(data[data.Class == 1])?.Class的數(shù) 為true的取出來????fraud_indices = np.array(data[data.Class == 1].index)數(shù)據(jù)拿到手 樣本等于1的用index取出來????????normal_indices = data[data.Class == 0].index把等于0的index索引拿出來????????random_normal_indices = np.random.choice(normal_indices, number_records_fraud, replace = False)????random.choice隨機選擇(參數(shù):選擇的范圍,選擇的個數(shù),replace :是否用代替)????????np.concatenate 0和1數(shù)據(jù)合并

122 交叉驗證 數(shù)據(jù)80訓(xùn)練 20驗證? 80訓(xùn)練中分三份 1,2訓(xùn)練3驗證? 13練2驗證 23練1驗證 再3次的結(jié)果取平均 目的讓數(shù)據(jù)不偏激 模型參數(shù)選擇合理性

from sklearn.cross_validation import train_test_split??cross_validation 交叉驗證模塊??train_test_split數(shù)據(jù)集切分? ?train_test_split(X,y,test_size = 0.3, random_state = 0)?test_size 切分比例?random_state數(shù)據(jù)洗牌操作,隨機切分?

接下來用下采樣訓(xùn)練 測試用原始數(shù)據(jù)的測試集部分 30%

123 recall 負樣本 未檢測出的患癌數(shù)重要,對其重查

124正則化懲罰? 懲罰力度??lr = LogisticRegression(C = c_param, penalty = 'l1')??c_param表示懲罰力度??param選擇懲罰模型l1 l2

125?from sklearn.cross_validation import KFold, cross_val_score??KFold規(guī)定做幾倍交叉驗證切幾份自己定? cross_val_score? 驗證評估結(jié)果? ? ?????from sklearn.metrics import confusion_matrix,recall_score,classification_report? ·confusion_matrix????????

126 confusion_matrix混淆矩陣? 預(yù)測與真實值的比較???x,y=1 TP正類 FN x=0y=1 TP,FN對recall有影響? ? ?x=1y=0 本來沒異常發(fā)生 誤抓,使精度偏低(精度計算:x0y0+x1y1/x1y0+x0y1)? x=0y=1有樣本未檢測到

127? ?邏輯回歸閾值??predict_proba >=0.1? ??閾值設(shè)的大誤殺率高>=0.9? 0.4-0.6范圍有檢測不到樣本情況? 實際應(yīng)用中根據(jù)誤判容忍度選擇值

128.SMOTE過采樣?????from imblearn.over_sampling import SMOTE? ? ? ? ??oversampler=SMOTE(random_state=0)實例化對象 過采樣? ?os_features,os_labels=oversampler.fit_sample(features_train,labels_train)

129文本分析


重要詞程度決定法

131提取數(shù)據(jù)?? content = df_news.content.values.tolist()? 把content列拿出來 再轉(zhuǎn)換成tolist格式??

current_segment = jieba.lcut(line)??lcut進行分詞??

df_content=pd.DataFrame({'content_S':content_S})??DataFrame把分詞寫在表格?

132? 數(shù)據(jù)清洗??stopwords=pd.read_csv("stopwords.txt",index_col=False,sep="\t",quoting=3,names=['stopword'], encoding='utf-8')

停用詞表 if word in stopwords:? ?continue? ?line_clean.append(word)? ? all_words.append(str(word))

出現(xiàn)就過濾掉continue? ? 沒出現(xiàn)就拿過來append????????df_all_words=pd.DataFrame({'all_words':all_words})看一下出現(xiàn)了哪些詞

words_count=df_all_words.groupby(by=['all_words'])['all_words'].agg({"count":numpy.size})??groupby統(tǒng)計詞出現(xiàn)的次數(shù)

print (" ".join(jieba.analyse.extract_tags(content_S_str, topK=5, withWeight=False)))??extract_tags提取關(guān)鍵詞? ?content_S_str傳入結(jié)果? ?topK返回結(jié)果數(shù)

133 想知道主題里包含了哪些關(guān)鍵詞

134 貝葉斯分類器對新聞分類????????df_train.label.unique()展示分類一共的詞 不重復(fù)的值?

做映射電腦只認數(shù)字? label_mapping = {"汽車": 1, "財經(jīng)": 2, "科技": }??df_train['label'] = df_train['label'].map(label_mapping)??label值替換用map將label_mapping傳進去

from sklearn.feature_extraction.text import CountVectorizer 把一句話轉(zhuǎn)換成向量

136 時間序列

rng = pd.date_range('2016-07-01', periods = 10, freq = '3D')???????? index=pd.date_range(dt.datetime(2016,1,1),periods=20))指定索引為天??print(time['2016-01-15'])打印天就可直接調(diào)數(shù)據(jù)出來????????#時間戳pd.Timestamp('2016-07-10')

138時間窗口? r = df.rolling(window = 10)?????print(r.mean())求均值

139.數(shù)據(jù)平穩(wěn)性arima與差分法 用于根據(jù)歷史數(shù)據(jù)預(yù)測未來 或未來降雨量? 數(shù)據(jù)必須有慣性特征如果16年和17年分布不一樣 就不能用 平穩(wěn)性要求均值方差不發(fā)生明顯變化

要求曲線波動不十分劇烈

sentiment_short['UMCSENT'].diff(1)? ? sentiment_short取到有數(shù)值的一列??diff相減的時間間隔

151? 貸款預(yù)測

print(loans_2007.iloc[0]) 顯示所有特征第一行? ?print(loans_2007.shape[1]) 列數(shù)統(tǒng)計

value_counts統(tǒng)計每個特征出現(xiàn)次數(shù)

153? 模型預(yù)測 不能用精度? 要用recall? 重要盯住 FP 這孫子不能還,卻借給了 代表虧損? 要降低這個值 TP能還也借了 代表收益 要提高這個值?

154 數(shù)據(jù)樣本不均衡會導(dǎo)致兩個值的預(yù)測都很高 6:1? 可以降低tp的樣本權(quán)重是1 升高fp權(quán)重為6

penalty = {? ? 0: 5,? ?1: 1}????lr = LogisticRegression(class_weight=penalty)? 自定義權(quán)重比例自定 5:1? class_weight

也可以隨機森林預(yù)測等方法? 尋找更好方法

156 客戶流失? ? 數(shù)據(jù)預(yù)處理? 1 數(shù)據(jù)取值范圍統(tǒng)一化 x-min/max-min 或標(biāo)準(zhǔn)化[-1,1]之間壓縮preprocessing.StandardScaler()? ? ? ?2 去除字符串 0-1化? ? ?看數(shù)據(jù)是否均衡? ?接下來交叉驗證 for形式模板 只換分類器名就行? 接下來用多個分類器玩 knn? svc rf? 并算精度? 每個分類器的預(yù)測與實際相同比例? 精度值不能表現(xiàn)問題 應(yīng)關(guān)注 預(yù)測沒流失 卻流失的數(shù)據(jù)? 求得數(shù)據(jù)來比較哪個分類器好? MAP比較 面積看哪個好

159? 流失優(yōu)先級操作

162? red card? ?數(shù)據(jù)查看? ?df.shap? df.head()? df.describe().T? ?df.dtypes? ??df.columns.tolist()

同一屬性特征下有多重數(shù)據(jù) 看沒種的均值 用groupby? ? ? ?grouped = df2['data1'].groupby(df['key1'])? ?grouped.mean()

163? 相似屬性歸類? 特征值是否有重復(fù)檢查? all_cols_unique_players[all_cols_unique_players > 1].dropna().head()??????all_cols_unique_players[all_cols_unique_players > 1].dropna().shape[0] == 0??

164查看缺失值?msno.matrix(players.sample(500),? ?figsize=(16, 7),? width_ratios=(15, 1)) 用插件?

或自己統(tǒng)計players = players[players.rater1.notnull()]? players.shape[0]

pandas_profiling.ProfileReport(players)包 自動統(tǒng)計數(shù)據(jù) 很有用

170?slice可以根據(jù)變量進行各種切分?? ?variable_slice(data, 'total_pop').head()? ?variable_slice不同國家人口變化情況??

172? ?recent[['total_pop', 'urban_pop', 'rural_pop']].apply(scipy.stats.skew)????scipy偏度的計算

177? 一組數(shù)據(jù)中最大值與最小值相差巨大,如何歸一化

178.應(yīng)用聚類算法得出異常IP點? 多特征權(quán)重?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容