乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      數(shù)據(jù)挖掘流程

       網(wǎng)摘文苑 2022-11-24 發(fā)布于新疆

      數(shù)據(jù)挖掘流程

      1. 了解需求,確認(rèn)目標(biāo)

      說一下幾點(diǎn)思考方法:

      1. 做什么?目的是什么?目標(biāo)是什么?
      2. 為什么要做?有什么價(jià)值和意義?
      3. 如何去做?完整解決方案是什么?

      2. 獲取數(shù)據(jù)

      1. pandas讀取數(shù)據(jù)pd.read.csv(),pd.read_excel()
      2. open讀取數(shù)據(jù)
      with open('ONE.TXT',mode='r+',encoding='utf-8') as f: data = f.read()

      3. 審閱數(shù)據(jù)

      包括但不限于:數(shù)據(jù)大小、維度、類型、含義、排序、索引等

      1. data.info()2. data.head()3. data.loc[]4. data.shape5. data.dtype6. data.sort_values(by=['A'],ascending=False)7. data.reset_index(drop=True,inplace=True)8. data['F'].values9. data['F'].value_counts()

      4. 數(shù)據(jù)分析

      統(tǒng)計(jì)分析、相關(guān)性分析、圖形分析(散點(diǎn)圖、直方圖、計(jì)數(shù)圖、柱狀圖、熱力圖)等

      4.1 統(tǒng)計(jì)分析

      1. 數(shù)字統(tǒng)計(jì)分析:data.describe()
      2. 非數(shù)字變量分析:data.describe(include='O')

      4.2 相關(guān)性分析

      data.corr() #method = 'pearson', 'spearman', 'kendall'

      4.3 圖形分析

      1. 散點(diǎn)圖

      seaborn.scatterplot(x=None, y=None, hue=None, style=None, size=None, data=None)
      文章圖片1

      2. 熱力圖

      mask = np.zeros_like(data.corr())mask[np.tril_indices_from(mask)]=Trueseaborn.heatmap(data.corr(),mask=mask,annot=True,fmt='.2f')
      文章圖片2

      3. 直方圖

      seaborn.distplot(x=data['A'])
      文章圖片3

      4. 統(tǒng)計(jì)圖

      seaborn.countplot(X='G',data=data)
      文章圖片4

      5. 柱狀圖

      x是名稱,y是數(shù)量

      plt.bar(x,y)

      6. 餅圖

      plt.pie(data['A'])

      7. 綜合繪圖

      繪制成一張圖

      import seabornimport matplotlib.pyplot as pltplt.style.use('seaborn-whitegrid')fig = plt.figure(figsize=(20,10))fig.subplots_adjust(wspace=0.5,hspace=0.5)for i,column in enumerate (data.columns):    ax = fig.add_subplot(3,5,i+1)    ax.set_title(column)    if data.dtypes[column] == np.object:        g = seaborn.countplot(y=column,data=data)        plt.xticks(rotation=25)    else:        g = seaborn.distplot(data[column])        plt.xticks(rotation=25)
      文章圖片5

      更多繪圖請(qǐng)看Seaborn常見繪圖總結(jié)

      5. 數(shù)據(jù)處理

      5.1. 數(shù)據(jù)類型處理

      data.replace('XXX',np.NaN,inplace=True)data.loc[data['G']=='F','G'] = 'K'

      5.2. 缺失值分析

      使用pandas模塊

      data.isnull().any() #查看那些列存在缺失data.isnull().sum() #統(tǒng)計(jì)缺失值數(shù)量data[data.isnull().values==True] #篩選出所有的缺失值data.isnull().sum()/data.shape[0] #計(jì)算缺失值比例(data.isnull().sum()/data.shape[0]).plot.bar() #缺失值比例柱狀圖

      使用missingno

      #安裝pip install missingnomissingno.matrix(df1, labels=True) # 無效數(shù)據(jù)密度顯示missingno.bar(df1) # 條形圖顯示missingno.heatmap(df1) # 熱圖相關(guān)性顯示

      5.3. 缺失值處理

      使用pandas模塊

      1. 刪除缺失值
      data.dropna(axis=0,subset=['A'])
      1. 填充缺失值
      data['A'].fillna(data['A'].mean())# mean、median、mode().iloc[0]

      使用
      sklearn.impute.SimpleImputer
      模塊

      simple = SimpleImputer(missing_values=nan, strategy=’mean’, fill_value=None)# strategy = mean、median、most_frequent、constantsimple.fit_transform(data)

      5.4. 異常值檢測(cè)

      1. 3σ原理:數(shù)據(jù)服從正態(tài)分布,采用3σ原則
      seaborn.kdeplot(data['A']) #繪制核密度圖查看數(shù)據(jù)分布def xigema(X): lower = X.mean() - 3 * X.std() upper = X.mean() + 3 * X.std() X = (X < lower) | (X > upper) return X#查看那些列存在缺失data[xigema(data)==True].any()#查看所有缺失的數(shù)據(jù)data[data[xigema(data)==True].any(1)]
      1. 四分位原理:數(shù)據(jù)不服從正太分布,采用箱線圖檢驗(yàn)
      seaborn.boxplot(data['A']) #繪制箱線圖查看數(shù)據(jù)分布def box(X,IQR):    lower = X.quantile(0.25) - IQR * (X.quantile(0.75) - X.quantile(0.25))    upper = X.quantile(0.75) + IQR * (X.quantile(0.75) - X.quantile(0.25))    X = (X < lower) | (X > upper)    return X#查看那些列存在缺失data[box(data,1.5)==True].any()#查看所有缺失的數(shù)據(jù)data[box(data,1.5)==True].any(1)]

      5.5. 異常值處理

      1. 置空
      # 異常值會(huì)被NaN代替,然后當(dāng)作缺失值處理data[xigema(data)==False]
      1. 填充
      # 使用mask判斷data.mask(xigema(data),np.NaN)

      6. 特征編碼

      6.1. 獨(dú)熱編碼

      pd.get_dummies(data,columns=['F','G'])#使用sklearnsklearn.preprocessing.OneHotEncoder(sparse=False).fit_transform(data['F'].values.reshape(-1,1))

      6.2. 類別編碼

      # 全量替換(包括數(shù)值),注意記得只編碼非數(shù)值有序變量labelencoder = LabelEncoder()data[['G','F']].apply(labelencoder.fit_transform)

      7. 特征構(gòu)造與變換

      7.1 特征構(gòu)造

      加、減、乘、除、取對(duì)數(shù)、構(gòu)造多項(xiàng)式等

      data['K'] = data['A'] + data['B']data['M'] = np.log10(data['A'])

      7.2 刪除多余數(shù)據(jù)

      data.drop(index=data[data['G']==0].index) #默認(rèn)刪除包含0的行,axis=1,刪除列del data['K']

      8. 數(shù)值離散化

      在不改變數(shù)據(jù)相對(duì)大小的情況下,只關(guān)心元素之間的大小關(guān)系

      from sklearn.preprocessing import KBinsDiscretizer# strategy=quantile-等頻,uniform-等寬,kmeans-聚類kbins = KBinsDiscretizer(n_bins=10, encode='ordinal', strategy='quantile')pd.DataFrame(kbins.fit_transform(data),columns=data.columns)

      9. 特征選擇

      9.1. 過濾法Filter

      1. 方差過濾
      from sklearn.feature_selection import VarianceThreshold,chi2,mutual_info_classifX_var=VarianceThreshold(threshold=0.5).fit_transform(X, y) #使用閾值0.5 進(jìn)行選擇
      1. 相關(guān)性過濾
      X_chi2 = SelectKBest(chi2, k=2).fit_transform(X, y)
      1. 互信息過濾
      X_mut = SelectKBest(mutual_info_classif, k=2).fit_transform(X, y)

      9.2. 嵌入法Embedding

      from sklearn.feature_selection import SelectFromModelfrom sklearn.ensemble import RandomForestClassifier as RFCRFC_ = RFC(n_estimators =10,random_state=0) #先隨機(jī)森林的實(shí)例化X_embedded = SelectFromModel(RFC_,threshold=0.005).fit_transform(X,y) #在這里我只想取出來有限的特征。X_embedded.shape #(42000,47)#模型的維度明顯被降低了 #通過學(xué)習(xí)曲線來找最佳閾值import numpy as npimport matplotlib.pyplot as pltthreshold = np.linspace(0,(RFC_.fit(X,y).feature_importances_).max(),20)#0到feature_importances_最大值平均取20個(gè)score = []for i in threshold: X_embedded = SelectFromModel(RFC_,threshold=i).fit_transform(X,y) once = cross_val_score(RFC_,X_embedded,y,cv=5).mean() score.append(once)plt.plot(threshold,score)plt.show()

      9.3. 包裝法Wrapper

      from sklearn.feature_selection import RFEfrom sklearn.linear_model import LogisticRegressionx_rfe = RFE(estimator=LogisticRegression(), n_features_to_select=3).fit(X, y)print(x_rfe.n_features_ ) # 所選特征的數(shù)量print(x_rfe.support_ ) # 按特征對(duì)應(yīng)位置展示所選特征,True 表示保留,F(xiàn)alse 表示剔除。print(x_rfe.ranking_ ) # 特征排名,使得 ranking_[i]對(duì)應(yīng)于第 i 個(gè)特征的排名位置,1 表示最優(yōu)特征。x_rfe.transform(X)

      10. 降維

      10.1 PCA

      降維訓(xùn)練前需要對(duì)數(shù)據(jù)標(biāo)準(zhǔn)化

      from sklearn.decomposition import PCAfrom sklearn import preprocessing # 調(diào)用預(yù)處理模塊X_std = preprocessing.scale(X)# 降維訓(xùn)練前需要對(duì)數(shù)據(jù)標(biāo)準(zhǔn)化pca = PCA(n_components=2).fit(X_std) # 保留 2 個(gè)主成分X_pca =pca.transform(X_std)print(pca.explained_variance_ratio_) # 查看利用 PCA 方法降維后保留的 2 個(gè)維度的信息量大小plt.subplot(1,2,1)plt.bar(range(0, pca.explained_variance_ratio_.size), pca.explained_variance_ratio_)#繪制 LDA 降維后不同簇與 y 的散點(diǎn)圖colors = ['r', 'b', 'g']markers = ['s', 'x', 'o']plt.subplot(1,2,2)for l, c, m in zip(np.unique(y), colors, markers): plt.scatter(X_pca[y==l, 0], X_pca[y==l,1], c=c, label=l, marker=m) # 散點(diǎn)圖plt.xlabel('pca1')plt.ylabel('pca2')plt.title('PCA')plt.legend(loc='lower left')plt.show()
      文章圖片6

      10.2 LDA

      一般在有標(biāo)簽的分類問題上,對(duì)數(shù)據(jù)降維,建議優(yōu)先考慮有監(jiān)督的 LDA 降維方法,結(jié)果一般會(huì)更加準(zhǔn)確。

      #此處與 PCA 方法不同,不必對(duì)原始數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化就能有較好的降維效果from sklearn.discriminant_analysis import LinearDiscriminantAnalysis as LDAlda = LDA(n_components=2).fit(X,y)print(lda.explained_variance_ratio_) # 查看利用 LDA 方法降維后保留的 2 個(gè)維度的信息量大小plt.subplot(1,2,1)plt.bar(range(0, lda.explained_variance_ratio_.size), lda.explained_variance_ratio_)X_lda =lda.transform(X)#繪制 LDA 降維后不同簇與 y 的散點(diǎn)圖,通過兩種降維后的散點(diǎn)圖對(duì)比不同方法的效果。colors = ['r', 'b', 'g']markers = ['s', 'x', 'o']plt.subplot(1,2,2)for c,l,m in zip(colors, np.unique(y), markers):    plt.scatter(X_lda[y == l, 0], X_lda[y == l, 1], c=c, label=l, marker=m)plt.xlabel('lda1')plt.ylabel('lda2')plt.title('LDA')plt.legend(loc='lower left')plt.show()
      文章圖片7

      11. 數(shù)據(jù)訓(xùn)練及預(yù)測(cè)

      1. 劃分?jǐn)?shù)據(jù)集

      from sklearn.model_selection import train_test_split# 30%數(shù)據(jù)用于測(cè)試,70%用于訓(xùn)練,42是隨機(jī)種子Xtrain, Xtest, Ytrain, Ytest = train_test_split(X,y,test_size=0.3,random_state=420)

      2. 特征縮放

      1. 標(biāo)準(zhǔn)化
        那些算法需要標(biāo)準(zhǔn)化:PCA、聚類算法、神經(jīng)網(wǎng)絡(luò)、邏輯回歸、SVM等。
      from sklearn.preprocessing import StandardScaler,MinMaxScalerscaler = StandardScaler().fit(Xtrain)X_train_std = scaler.transform(Xtrain)X_test_std = scaler.transform(Xtest)
      1. MinMaxScaler

      最小-最大規(guī)范化對(duì)原始數(shù)據(jù)進(jìn)行線性變換,變換到[0,1]區(qū)間

      from sklearn.preprocessing import MinMaxScalerminmax = MinMaxScaler().fit(Xtrain)X_train_std = minmax.transform(Xtrain)X_test_std = minmax.transform(Xtest)

      3. 算法訓(xùn)練

      rfc = RandomForestClassifier(random_state=42) #建立模型: 隨機(jī)森林rfc = rfc.fit(Xtrain, Ytrain) # 訓(xùn)練模型: 隨即森林print(rfc.feature_importances_) #特征重要性

      4. 算法預(yù)測(cè)

      rfc.predict(Xtest)

      12. 模型評(píng)估

      12.1 分類

      含義

      sklearn.metrics.confusion_matrix

      混淆矩陣

      sklearn.metrics.accuracy_score

      準(zhǔn)確率accuracy

      sklearn.metrics.precision_score

      精確度precision

      sklearn.metrics.recall_score

      召回率recall

      sklearn.metrics.precision_recall_curve

      精確度-召回率平衡曲線

      sklearn.metrics.f1_score

      F1-Score

      sklearn.metrics.roc_auc_score

      ROC

      sklearn.metrics.plot_roc_curve

      ROC繪圖

      sklearn.metrics.plot_precision_recall_curve

      P-R曲線繪圖

      sklearn.metrics.plot_confusion_matrix

      混淆舉證繪圖

      from sklearn.metrics import accuracy_score, precision_score, f1_score, roc_auc_score, recall_scorerecall_score(y_true, y_pred, average='micro')

      繪圖

      from sklearn.metrics import plot_confusion_matrix,plot_precision_recall_curve,plot_roc_curvefrom sklearn.svm import SVCX_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)clf = SVC(random_state=42)clf.fit(X_train, y_train)#混淆舉證plot_confusion_matrix(clf, X_test, y_test,normalize='true')#P-R曲線plot_precision_recall_curve(clf, X_test, y_test)#ROC曲線plot_roc_curve(clf, X_test, y_test)
      文章圖片8

      12.2 回歸

      12.3 聚類

      13. 模型優(yōu)化

      13.1 網(wǎng)格搜索/隨機(jī)搜索

      from sklearn.model_selection import GridSearchCV,RandomizedSearchCVparam_grid = {'n_estimators' : np.arange(100,200,10),              'max_depth' : np.arange(1, 20, 1),              'max_features' : np.arange(5,30,1),              'criterion' : ['gini', 'entropy']             }rfc = RandomForestClassifier(random_state=42)GS = GridSearchCV(rfc,param_grid,cv=10,scoring='roc_auc')GS.fit(X,y)print(GS.best_params_) # 最優(yōu)參數(shù)print(GS.best_score_) # 最優(yōu)得分print(GS.best_estimator_) # 最有分類器

      13.2 交叉驗(yàn)證

      from sklearn.model_selection import cross_val_scorecross_val_score(rfc, X, y, cv=5,scoring='roc_auc')

      14. 模型保存于加載

      from sklearn import svm from sklearn import datasetsimport joblib# sklearn.externals.joblib函數(shù)是用在0.21及以前的版本中,在最新的版本中,該函數(shù)應(yīng)被棄用改為直接導(dǎo)入joblib# from sklearn.externals import joblibclf = svm.SVC()clf.fit(X,y) # 保存訓(xùn)練好的clf模型 joblib.dump(clf,'clf.pkl') # 重新加載訓(xùn)練好的clf模型 clf = joblib.load('clf.pkl') # 打印預(yù)測(cè)值print(clf.predict(X[0:1000])) 

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多