女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于Python進行機器學習的流程:探索性數據分析、特征工程、訓練模型、評估結果

zhKF_jqr_AI ? 來源:未知 ? 作者:李倩 ? 2018-07-26 09:22 ? 次閱讀

編者按:Sapient數據科學家Deepak Jhanji通過實例演示了基于Python進行機器學習的流程:探索性數據分析、特征工程、訓練模型、評估結果.

機器學習提供了一個無需明確編程、可以自行學習和提升的系統。它使用特定的處理數據的算法自行學習。在這篇教程中,我們將使用Python和XGBoost預測簽證結果。

這篇教程主要介紹以下內容:

探索性數據分析

特征工程和特征提取

基于XGBoost算法訓練數據集

使用訓練好的模型進行預測

加載庫

Python庫是函數和方法的匯集,讓你在無需自行實現算法的情況下編寫代碼。相應地,你需要下載、安裝、引入所用的庫。

NumPy,簡稱np,是Python的基礎性的科學計算包。它包括強大的N維數組對象,精密的函數,集成C/C++的工具,線性代數,隨機數。緊隨其后的是pandas,簡稱pd,一個開源的BSD許可庫,提供高性能、易于使用的數據結構和數據分析工具。接著是scikit learn/sklean庫,提供機器學習算法。除了這些基礎性的庫之外,這篇教程還用到了Statistics(提供mode()等統計函數)、re(正則表達式)、XGboost(XGBoost分類器)。

import numpy as np

import pandas as pd

from sklearn.model_selection import train_test_split

from sklearn.linear_model importLogisticRegression

from sklearn.metrics import confusion_matrix, classification_report

from statistics import mode

import re

from xgboost importXGBClassifier

H1B簽證和數據集

數據集可以通過Kaggle獲取:nsharan/h-1b-visa

它包括五年的H-1B申請記錄,共計近三百萬條記錄。數據集的列包括狀態、雇主名稱、工作地點、職位、現行工資、職業代碼、年份。

數據來自外國勞工認證辦公室(OFLC),每年都把可公開披露的數據上傳至網絡。H1B簽證是一種需求強烈的非移民簽證,允許專門職業的外國勞工進入國境。H-1B簽證是一種基于雇傭關系的非移民簽證,對美國的臨時外國勞工發放。外國人想要申請H1-B簽證,必須有美國雇主為其提供工作,并向美國移民局提交H-1B申請。這也是國際留學生完成學業開始全職工作后最常見的簽證申請類別。

H1B申請流程的第一步是美國雇主為外國勞工提交H1B申請。第二步是由州就業保障機構確認現行工資和實際工資。如果現行工資高于潛在雇主提供的工資,那么需要進行工資標準審批。H1B申請流程的第三步是提交勞工條件申請。接下來的步驟是提交H1B申請至USCIS(美國公民及移民服務局)的相應辦公室。各地的H1B申請處理時間不同。如果你希望加快申請,可以選擇加急處理。H1B申請流程的最后一步是通過輸入收據號查詢H1B簽證狀態。一旦USCIS記錄了你的申請,就會在他們的系統中更新你的簽證狀態。

數據集中,每個樣本應該包含以下信息:

CASE_ID每個申請唯一的編號

CASE_STATUS申請狀態,這是目標變量。

EMPLOYER_NAME提交申請的雇主名稱。

SOC_NAME職業名稱。

JOB_Title頭銜。

FULL_TIME_POSITION是否是全職職位。

PREVAILING_WAGE職位的現行工資為支付給類似勞工的平均工資。

YEAR提交h1b申請的年份。

WORKSITE工作地點所在州、城市。

Lon工作地點經度。

Lat工作地點緯度。

加載數據集

首先要做的是將數據集加載為對象。pandas的.read_csv()方法可以加載csv文件:

df = pd.read_csv('C:/Users/djhanj/Downloads/h1b_TRAIN.csv')

理解數據

加載數據后,總是建議探索數據集,以確保加載的數據結構、格式正確,所有變量或特征正確加載。

.info()方法可以用來檢查數據信息。在我們的例子上,這個方法顯示數據以DataFrame的格式存儲,其中1個變量為整數格式,4個變量為浮點數格式,6個變量為對象格式。

.head()方法返回首5行數據。這能讓你大概了解數據集。

.describe()方法將顯示最小值、最大值、均值、中位數、標準差,以及所有整數和浮點數變量的數目。

df.info()

df.head()

df.describe()

RangeIndex: 2251844 entries, 0 to 2251843

Data columns (total 11 columns):

CASE_ID int64

CASE_STATUS object

EMPLOYER_NAME object

SOC_NAME object

JOB_TITLE object

FULL_TIME_POSITION object

PREVAILING_WAGE float64

YEAR float64

WORKSITE object

lon float64

lat float64

dtypes: float64(4), int64(1), object(6)

memory usage: 189.0+ MB

數據集共有11列,其中1列是目標變量(case_status)。也就是說,數據有1個目標變量和10個獨立變量。你當然應該檢查下目標變量的分類。你可以在df的case_status特征上使用.unique()方法。

這是一個分類問題。你需要預測case_status的所屬分類。

df['CASE_STATUS'].unique()

df.head(10)

特征工程和數據預處理

注意,目標變量包含6個不同的分類:

Certified

Certified Withdrawn

Rejected

Invalidatd

Pending Quality and compliance review

Denied

取決于具體的業務問題,你需要決定這是一個多元分類問題,還是一個二元分類問題。如果是二元分類問題,那么只有Certified(批準)和Denied(拒簽)兩個分類。所以你要做的第一件事是將剩余的分類轉換為Certified或Denied。其中,Rejected和Invalidated都是拒簽的情形,所以應該將這兩種狀態轉換為Denied。在美簽中,Pending Quality and compliance的最終結果最可能是拒簽,所以也應該轉換為Denied。Certified withdrawn(批準后撤回)則是批準的情形,因為簽證已經批準了,只不過雇主因為種種原因(比如勞工更換工作單位)而決定撤回申請。

df.CASE_STATUS[df['CASE_STATUS']=='REJECTED'] = 'DENIED'

df.CASE_STATUS[df['CASE_STATUS']=='INVALIDATED'] = 'DENIED'

df.CASE_STATUS[df['CASE_STATUS']=='PENDING QUALITY AND COMPLIANCE REVIEW - UNASSIGNED'] = 'DENIED'

df.CASE_STATUS[df['CASE_STATUS']=='CERTIFIED-WITHDRAWN'] = 'CERTIFIED'

至于Withdrawn(撤回)分類,由于很難預測數據集中的Withdrawn案例最終結果如何,我們可以直接移除這一分類。另一個移除Withdrawn分類的原因是它在整個數據集中所占的比例小于1%,這意味著模型很可能無法精確分類Withdrawn分類。

df = df.drop(df[df.CASE_STATUS == 'WITHDRAWN'].index)

查看下數據集中批準和拒簽的比例各是多少?

df = df[df['CASE_STATUS'].notnull()]

print(df['CASE_STATUS'].value_counts())

結果:

CERTIFIED 2114025

DENIED 70606

Name: CASE_STATUS, dtype: int64

整個數據集中,只有大約3.2%的申請被拒,這意味著,數據集中大約96.8%的申請被批準了。這表明數據集是高度失衡的。失衡數據集的一大問題是模型將更偏向頻繁出現的分類;在這個例子中,模型將偏向批準。有一些解決失衡問題的技術,不過本教程沒有使用它們。

處理缺失值

這個數據集并不整潔,其中包含很多缺失值。你必須處理缺失值。最簡單的方法是移除它們,不過這會損失信息。讓我們逐步看看如何處理缺失值:

CASE_ID 0

CASE_STATUS 0

EMPLOYER_NAME 11

SOC_NAME 12725

JOB_TITLE 6

FULL_TIME_POSITION 1

PREVAILING_WAGE 41

YEAR 0

WORKSITE 0

lon 77164

lat 77164

dtype: int64

就EMPLOYER_NAME(雇主名稱)而言,我們可以用眾數(最常出現的值)填充11項缺失值:

df['EMPLOYER_NAME'] = df['EMPLOYER_NAME'].fillna(df['EMPLOYER_NAME'].mode()[0])

如果不放心,我們可以用assert語句確保不存在空值。如有空值,Python會拋出AssertionError。

assert pd.notnull(df['EMPLOYER_NAME']).all().all()

下面我們將查看prevailing_wage(現行工資)。大部分申請的工資都在4萬到8萬美元之間。某些申請的工資超過50萬美元,有些則為0美元——由于這些情形很罕見,它們應該作為離散值移除(在2%分位和98%分位處截斷)。

df.loc[df.PREVAILING_WAGE < 34029, 'PREVAILING_WAGE']= 34029

df.loc[df['PREVAILING_WAGE'] > 138703, 'PREVAILING_WAGE']= 138703

截斷之后,現行工資的均值和中位數非常接近。中位數為6萬5千美金,而均值為6萬8千美金。我們最終將用均值替換缺失值。不過由于這兩個值非常接近,你也可以用中位數替換。

df.PREVAILING_WAGE.fillna(df.PREVAILING_WAGE.mean(), inplace = True)

JOB_TITLE、FULL_TIME_POSITION、SOC_NAME列也可以使用眾數填充缺失值。

df['JOB_TITLE'] = df['JOB_TITLE'].fillna(df['JOB_TITLE'].mode()[0])

df['FULL_TIME_POSITION'] = df['FULL_TIME_POSITION'].fillna(df['FULL_TIME_POSITION'].mode()[0])

df['SOC_NAME'] = df['SOC_NAME'].fillna(df['SOC_NAME'].mode()[0])

移除lat和lon列

我們將移除lat(緯度)和lon(經度)列,因為它們和工作地點列重復了。在DataFrame上使用drop方法可以移除列,只需指定列名和軸(0表示行、1表示列)。

df = df.drop('lat', axis = 1)

df = df.drop('lon', axis = 1)

特征創建

基于現有的數據有可能制作一個模型,不過,某些列包含尚待提取的信息。

EMPLOYER_NAME包含雇主的名稱,其中包含大量不同的雇主(為雇員提交申請的公司)。我們無法直接在模型中使用EMPLOYER_NAME,因為類別太多了;超過500個不同雇主。

提交申請最多的5家公司是Infosys、TCS、Wipro、Deloitte、IBM。不過,根據經驗,由大學提交的申請更容易通過。

所以,問題是,我們如何從該特征中提取出一些信息?

好吧,我們大概可以創建一個名為NEW_EMPLOYER的新特征:雇主名稱是否包含University(大學)字符串。

創建一個空列相當簡單:

df['NEW_EMPLOYER'] = np.nan

在檢查是否包含字符串時,為了避免大小寫問題,我們將雇主名稱統一轉換為小寫:

df['EMPLOYER_NAME'] = df['EMPLOYER_NAME'].str.lower()

df.NEW_EMPLOYER[df['EMPLOYER_NAME'].str.contains('university')] = 'university'

df['NEW_EMPLOYER']= df.NEW_EMPLOYER.replace(np.nan, 'non university', regex=True)

變量SOC_NAME也存在這個問題。它包括職業名稱。我們將創建一個名為OCCUPATION的新變量:

df['OCCUPATION'] = np.nan

df['SOC_NAME'] = df['SOC_NAME'].str.lower()

df.OCCUPATION[df['SOC_NAME'].str.contains('computer','programmer')] = 'computer occupations'

df.OCCUPATION[df['SOC_NAME'].str.contains('software','web developer')] = 'computer occupations'

df.OCCUPATION[df['SOC_NAME'].str.contains('database')] = 'computer occupations'

df.OCCUPATION[df['SOC_NAME'].str.contains('math','statistic')] = 'Mathematical Occupations'

df.OCCUPATION[df['SOC_NAME'].str.contains('predictive model','stats')] = 'Mathematical Occupations'

df.OCCUPATION[df['SOC_NAME'].str.contains('teacher','linguist')] = 'Education Occupations'

df.OCCUPATION[df['SOC_NAME'].str.contains('professor','Teach')] = 'Education Occupations'

df.OCCUPATION[df['SOC_NAME'].str.contains('school principal')] = 'Education Occupations'

df.OCCUPATION[df['SOC_NAME'].str.contains('medical','doctor')] = 'Medical Occupations'

df.OCCUPATION[df['SOC_NAME'].str.contains('physician','dentist')] = 'Medical Occupations'

df.OCCUPATION[df['SOC_NAME'].str.contains('Health','Physical Therapists')] = 'Medical Occupations'

df.OCCUPATION[df['SOC_NAME'].str.contains('surgeon','nurse')] = 'Medical Occupations'

df.OCCUPATION[df['SOC_NAME'].str.contains('psychiatr')] = 'Medical Occupations'

df.OCCUPATION[df['SOC_NAME'].str.contains('chemist','physicist')] = 'Advance Sciences'

df.OCCUPATION[df['SOC_NAME'].str.contains('biology','scientist')] = 'Advance Sciences'

df.OCCUPATION[df['SOC_NAME'].str.contains('biologi','clinical research')] = 'Advance Sciences'

df.OCCUPATION[df['SOC_NAME'].str.contains('public relation','manage')] = 'Management Occupation'

df.OCCUPATION[df['SOC_NAME'].str.contains('management','operation')] = 'Management Occupation'

df.OCCUPATION[df['SOC_NAME'].str.contains('chief','plan')] = 'Management Occupation'

df.OCCUPATION[df['SOC_NAME'].str.contains('executive')] = 'Management Occupation'

df.OCCUPATION[df['SOC_NAME'].str.contains('advertis','marketing')] = 'Marketing Occupation'

df.OCCUPATION[df['SOC_NAME'].str.contains('promotion','market research')] = 'Marketing Occupation'

df.OCCUPATION[df['SOC_NAME'].str.contains('business','business analyst')] = 'Business Occupation'

df.OCCUPATION[df['SOC_NAME'].str.contains('business systems analyst')] = 'Business Occupation'

df.OCCUPATION[df['SOC_NAME'].str.contains('accountant','finance')] = 'Financial Occupation'

df.OCCUPATION[df['SOC_NAME'].str.contains('financial')] = 'Financial Occupation'

df.OCCUPATION[df['SOC_NAME'].str.contains('engineer','architect')] = 'Architecture & Engineering'

df.OCCUPATION[df['SOC_NAME'].str.contains('surveyor','carto')] = 'Architecture & Engineering'

df.OCCUPATION[df['SOC_NAME'].str.contains('technician','drafter')] = 'Architecture & Engineering'

df.OCCUPATION[df['SOC_NAME'].str.contains('information security','information tech')] = 'Architecture & Engineering'

df['OCCUPATION']= df.OCCUPATION.replace(np.nan, 'Others', regex=True)

由于所在州對簽證申請影響重大,我們將從WORKSITE中分割出州信息:

df['state'] = df.WORKSITE.str.split('\s+').str[-1]

為了計算概率,我們需要將目標分類轉換為二值,即0和1.

from sklearn import preprocessing

class_mapping = {'CERTIFIED':0, 'DENIED':1}

df["CASE_STATUS"] = df["CASE_STATUS"].map(class_mapping)

移除用不到的變量:

df = df.drop('EMPLOYER_NAME', axis = 1)

df = df.drop('SOC_NAME', axis = 1)

df = df.drop('JOB_TITLE', axis = 1)

df = df.drop('WORKSITE', axis = 1)

df = df.drop('CASE_ID', axis = 1)

在閱讀建模部分之前,別忘了檢查變量的數據類型。例如,有些變量應該被用作類別或因子,但是它們的格式卻是對象字符串。

所以,我們需要將這些變量的類型從對象轉為類別,因為它們屬于類別特征。

df1[['CASE_STATUS', 'FULL_TIME_POSITION', 'YEAR','NEW_EMPLOYER','OCCUPATION','state']] = df1[['CASE_STATUS', 'FULL_TIME_POSITION', 'YEAR','NEW_EMPLOYER','OCCUPATION','state']].apply(lambda x: x.astype('category'))

切分數據為訓練集和測試集

將數據集一分為二,60%為訓練集,40%為測試集。

X = df.drop('CASE_STATUS', axis=1)

y = df.CASE_STATUS

seed = 7

test_size = 0.40

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=test_size, random_state=seed)

檢查一下訓練集中是否有null值:

print(X_train.isnull().sum())

應該沒有:

FULL_TIME_POSITION 0

PREVAILING_WAGE 0

YEAR 0

NEW_EMPLOYER 0

OCCUPATION 0

state 0

dtype: int64

由于XGBoost只能處理數值數據。因此我們需要使用pd.get_dummies()對類別值進行獨熱編碼。

X_train_encode = pd.get_dummies(X_train)

X_test_encode = pd.get_dummies(X_test)

XGBoost

XGBoost是“Extreme Gradient Boosting”(極端梯度提升)的簡稱,這是一種監督學習方法。具體而言,是梯度提升決策樹的一種注重速度和性能的實現。

提升是一種集成方法,集成方法尋求基于“弱”分類器創建強分類器(模型)。在這一上下文中,弱和強指預測目標變量實際值的準確程度。通過在其他模型基礎上迭代地添加模型,前一個模型的誤差將由下一個預測模型糾正,直到達到滿意的表現。

梯度提升同樣包含逐漸增加模型,糾正之前模型誤差地集成方法。不過,并不在每次迭代中給分類器分配不同的權重,而是用新模型去擬合之前預測的新殘差,并最小化加上最新預測后的損失。

所以,最終將使用梯度下降技術更新模型,梯度提升由此得名。

關于XGBoost更多的信息,可以參考我們的XGBoost課程。

XGBoost可以直接通過pip安裝:

pip install xgboost

用于分類的XGBoost模型為XGBClassifier()。創建XGBClassifier()時,max_features可以設為sqrt,即特征數的平方根。max_features是尋找最佳分割時需要考慮的特征數。所以,假設n_features為100,那么max_features取值為10.

import xgboost

gbm=xgboost.XGBClassifier(max_features='sqrt', subsample=0.8, random_state=10)

我們使用GridSearchCV()調整超參數:

GridSearchCV()實現了fit和score方法。它也同樣實現了predict、predict_probad、decision_function、transform、inverse_transform方法(如果底層使用的估計器實現了這些方法。)

應用這些方法的估計器的參數是通過在參數網格上交叉驗證、網格搜索得到的。

n_estimators的取值,推薦1、10、100,learning_rate的取值,推薦0.1、0.01、0.5。

n_estimators是提升階段數。梯度提升對過擬合的魯棒性相當不錯,因此較大的取值通常意味著更好地表現。

學習率。學習率可以減慢模型的訓練速度,避免過快學習導致過擬合。通常將學習率設為0.1到0.3之間的數字。

通過三折交叉驗證,選出最佳learning_rate和n_estimators值。

from sklearn.model_selection importGridSearchCV

parameters = [{'n_estimators': [10, 100]},

{'learning_rate': [0.1, 0.01, 0.5]}]

grid_search = GridSearchCV(estimator = gbm, param_grid = parameters, scoring='accuracy', cv = 3, n_jobs=-1)

grid_search = grid_search.fit(train_X, train_y)

擬合訓練集得到了97%的精確度(學習率0.5):

grid_search.grid_scores_, grid_search.best_params_, grid_search.best_score_

grid_search.best_estimator_將返回網格搜索得到的最佳模型:

XGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=1,

colsample_bytree=1, gamma=0, learning_rate=0.5, max_delta_step=0,

max_depth=3, max_features='sqrt', min_child_weight=1, missing=None,

n_estimators=100, n_jobs=1, nthread=None,

objective='binary:logistic', random_state=10, reg_alpha=0,

reg_lambda=1, scale_pos_weight=1, seed=None, silent=True,

subsample=0.8)

使用這一最佳的超參數組合在訓練集上進行訓練,并在測試集上進行預測。最終得到了96.56%的精確度。

從精確度上來看,我們的模型表現得相當不錯。然而,果真如此嗎?別忘了,我們的數據集是一個失衡的數據集。模型表現到底如何?不能只看精確度。

我們繪制AUROC曲線看看。

from sklearn import metrics

import matplotlib.pyplot as plt

fpr_xg, tpr_xg, thresholds = metrics.roc_curve(y_test, y_pred)

auc_xgb = np.trapz(tpr_xg,fpr_xg)

plt.plot(fpr_xg,tpr_xg,label=" auc="+str(auc_xgb))

plt.legend(loc=4)

plt.show()

果然,在AUROC曲線下,模型原形畢露了。AUC值0.5左右,ROC曲線基本上是對角線,這是隨機猜測的水平!

看來,我們真應該用些應對失衡分類的技術,例如欠采樣和過采樣,或者SMOTE方法。

由于這篇文章已經夠長了,這里就不深入討論如何克服失衡問題了。雖然結果不如人意,但是我們仍然通過這個例子熟悉了機器學習的基本流程。

最后,我們將介紹如何儲存模型,這樣下次預測就可以直接使用了,不用再費時費力地從頭開始訓練模型。最簡單直接的方法,就是使用Python的Pickle模塊。

import pickle

XGB_Model_h1b = 'XGB_Model_h1b.sav'

pickle.dump(gbm, open(XGB_Model_h1b, 'wb'))

結語

創建模型最重要的部分是特征工程和特征選取過程。我們應該從特征中提取最多的信息,讓我們的模型更堅韌、更精確。特征選取和提取需要時間和經驗??赡苡卸喾N處理數據集中的信息的方法。

有許多機器學習算法,你應該選擇能夠給出最佳結果的算法。你也可以使用不同的算法然后將它們集成起來。在生產環境中也可以進行A/B測試,以知曉哪個模型表現更優。勇往直前,動手編程,嘗試不同的方法。快樂編程!

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 機器學習
    +關注

    關注

    66

    文章

    8490

    瀏覽量

    134022
  • 數據分析
    +關注

    關注

    2

    文章

    1470

    瀏覽量

    34775
  • python
    +關注

    關注

    56

    文章

    4823

    瀏覽量

    86125

原文標題:Python | 如何使用機器學習預測H1B簽證狀態

文章出處:【微信號:jqr_AI,微信公眾號:論智】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    【大語言模型:原理與工程實踐】大語言模型的預訓練

    數據格式的轉換、數據字段的匹配和整合等。通過數據級凈化,可以進一步提高數據的質量和可用性,為后續的數據分析和建模提供更有價值的
    發表于 05-07 17:10

    Python機器學習常用庫

    、Scikit-Learn在機器學習數據挖掘的應用中,Scikit-Learn是一個功能強大的Python包,我們可以用它進行分類、
    發表于 03-26 16:29

    常用python機器學習庫盤點

    現在人工智能非?;鸨?b class='flag-5'>機器學習應該算是人工智能里面的一個子領域,而其中有一塊是對文本進行分析,對數據進行
    發表于 05-10 15:20

    怎么有效學習Python數據分析

    Python在人工智能、機器學習領域受到火熱追捧,很大程度上在于它擁有非常龐大的第三方庫,以及強大的通用編程性能。因此,快速掌握Python進行數據
    發表于 06-28 15:18

    什么是探索性測試ET

    探索性測試ET(exploratory)是和ST(script based test)相比較而言的.籠統地說,ST就是有確定的步驟和預期目標的測試.探索性測試可以說是一種測試思維。它沒有很多實際
    發表于 07-05 06:38

    數據探索數據預處理

    目錄1數據探索數據預處理21.1 賽題回顧21.2 數據探索性分析與異常值處理21.3 相關性
    發表于 07-12 08:37

    探索性數據分析(EDA)及其應用

    所謂探索性數據分析(EDA),是指對已有的數據(特別是調查或觀察得來的原始數據)在盡量少的先驗假定下進行
    發表于 01-24 10:02 ?1623次閱讀
    <b class='flag-5'>探索性</b><b class='flag-5'>數據分析</b>(EDA)及其應用

    設計多網絡協議的Python網絡編程的探索性指南

    很高興看到本書出版了,我要感謝所有為本書的出版做出貢獻的人。本書是Python網絡編程方面的探索性指南,涉及了很多網絡協議
    發表于 09-14 10:47 ?5次下載

    如何構建檢測信用卡詐騙的機器學習模型

    對信用卡交易數據建立檢測模型,使用Python進行預處理與機器學習建模工作,代碼通俗易懂。包括
    的頭像 發表于 10-04 09:44 ?3253次閱讀

    細分模型探索性數據分析和預處理

    交流學習!文章較長,建議收藏~ 客戶細分模型是將整體會員劃分為不同的細分群體或類別,然后基于細分群體做管理、營銷和關懷。客戶細分模型常用于整體會員的宏觀性分析以及
    的頭像 發表于 11-08 16:05 ?1816次閱讀
    細分<b class='flag-5'>模型</b><b class='flag-5'>探索性</b><b class='flag-5'>數據分析</b>和預處理

    Sweetviz讓你三行代碼實現探索性數據分析

    ,還能對每個欄目做眾數、最大值、最小值等橫向對比。 所有輸入的數值、文本信息都會被自動檢測,并進行數據分析、可視化和對比,最后自動幫你進行總結,是一個探索性數據分析的好幫手。 1.準備
    的頭像 發表于 10-17 10:59 ?595次閱讀
    Sweetviz讓你三行代碼實現<b class='flag-5'>探索性</b><b class='flag-5'>數據分析</b>

    Sweetviz: 讓你三行代碼實現探索性數據分析

    欄目做眾數、最大值、最小值等橫向對比。 所有輸入的數值、文本信息都會被自動檢測,并進行數據分析、可視化和對比,最后自動幫你進行總結,是一個探索性數據分析的好幫手。 1.準備 開始之前,
    的頭像 發表于 10-31 10:28 ?1108次閱讀
    Sweetviz: 讓你三行代碼實現<b class='flag-5'>探索性</b><b class='flag-5'>數據分析</b>

    機器學習數據分析中的應用

    隨著大數據時代的到來,數據量的爆炸性增長對數據分析提出了更高的要求。機器學習作為一種強大的工具,通過訓練
    的頭像 發表于 07-02 11:22 ?1222次閱讀

    機器學習中的數據預處理與特征工程

    機器學習的整個流程中,數據預處理與特征工程是兩個至關重要的步驟。它們直接決定了
    的頭像 發表于 07-09 15:57 ?1144次閱讀

    eda與傳統數據分析的區別

    進行初步的探索和理解,發現數據中潛在的模式、關系、異常值等,為后續的分析和建模提供線索和基礎。 方法論 :EDA強調數據的真實分布和可視化,
    的頭像 發表于 11-13 10:52 ?765次閱讀