日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

【算法竞赛学习】心跳信号分类预测-数据分析

發布時間:2023/12/15 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【算法竞赛学习】心跳信号分类预测-数据分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Task 2 數據分析

Tip: 此部分為零基礎入門數據挖掘的 Task2 EDA-數據探索性分析 部分,帶你來了解數據,熟悉數據,和數據做朋友,歡迎大家后續多多交流。

賽題:心電圖心跳信號多分類預測

2.1 EDA 目標

  • EDA的價值主要在于熟悉數據集,了解數據集,對數據集進行驗證來確定所獲得數據集可以用于接下來的機器學習或者深度學習使用。
  • 當了解了數據集之后我們下一步就是要去了解變量間的相互關系以及變量與預測值之間的存在關系。
  • 引導數據科學從業者進行數據處理以及特征工程的步驟,使數據集的結構和特征集讓接下來的預測問題更加可靠。
  • 完成對于數據的探索性分析,并對于數據進行一些圖表或者文字總結并打卡。

2.2 內容介紹

  • 載入各種數據科學以及可視化庫:
    • 數據科學庫 pandas、numpy、scipy;
    • 可視化庫 matplotlib、seabon;
  • 載入數據:
    • 載入訓練集和測試集;
    • 簡略觀察數據(head()+shape);
  • 數據總覽:
    • 通過describe()來熟悉數據的相關統計量
    • 通過info()來熟悉數據類型
  • 判斷數據缺失和異常
    • 查看每列的存在nan情況
    • 異常值檢測
  • 了解預測值的分布
    • 總體分布概況
    • 查看skewness and kurtosis
    • 查看預測值的具體頻數
  • 2.3 代碼示例

    2.3.1 載入各種數據科學與可視化庫

    #coding:utf-8 #導入warnings包,利用過濾器來實現忽略警告語句。 import warnings warnings.filterwarnings('ignore') import missingno as msno import pandas as pd from pandas import DataFrame import matplotlib.pyplot as plt import seaborn as sns import numpy as np

    2.3.2 載入訓練集和測試集

    導入訓練集train.csv

    import pandas as pd from pandas import DataFrame, Series import matplotlib.pyplot as plt Train_data = pd.read_csv('./train.csv')

    導入測試集testA.csv

    import pandas as pd from pandas import DataFrame, Series import matplotlib.pyplot as plt Test_data = pd.read_csv('./testA.csv')

    所有特征集均脫敏處理(方便大家觀看)

    • id - 心跳信號分配的唯一標識
    • heartbeat_signals - 心跳信號序列
    • label - 心跳信號類別(0、1、2、3)

    data.head().append(data.tail())——觀察首尾數據

    data.shape——觀察數據集的行列信息

    觀察train首尾數據

    Train_data.head().append(Train_data.tail()) <bound method DataFrame.info of id heartbeat_signals label 0 0 0.9912297987616655,0.9435330436439665,0.764677... 0.0 1 1 0.9714822034884503,0.9289687459588268,0.572932... 0.0 2 2 1.0,0.9591487564065292,0.7013782792997189,0.23... 2.0 3 3 0.9757952826275774,0.9340884687738161,0.659636... 0.0 4 4 0.0,0.055816398940721094,0.26129357194994196,0... 2.0 ... ... ... ... 99995 99995 1.0,0.677705342021188,0.22239242747868546,0.25... 0.0 99996 99996 0.9268571578157265,0.9063471198026871,0.636993... 2.0 99997 99997 0.9258351628306013,0.5873839035878395,0.633226... 3.0 99998 99998 1.0,0.9947621698382489,0.8297017704865509,0.45... 2.0 99999 99999 0.9259994004527861,0.916476635326053,0.4042900... 0.0[100000 rows x 3 columns]>

    觀察train數據集的行列信息

    Train_data.shape (100000, 3)

    觀察testA首尾數據

    Test_data.head().append(Test_data.tail()) id heartbeat_signals 0 100000 0.9915713654170097,1.0,0.6318163407681274,0.13... 1 100001 0.6075533139615096,0.5417083883163654,0.340694... 2 100002 0.9752726292239277,0.6710965234906665,0.686758... 3 100003 0.9956348033996116,0.9170249621481004,0.521096... 4 100004 1.0,0.8879490481178918,0.745564725322326,0.531... 19995 119995 1.0,0.8330283177934747,0.6340472606311671,0.63... 19996 119996 1.0,0.8259705825857048,0.4521053488322387,0.08... 19997 119997 0.951744840752379,0.9162611283848351,0.6675251... 19998 119998 0.9276692903808186,0.6771898159607004,0.242906... 19999 119999 0.6653212231837624,0.527064114047737,0.5166625...

    觀察testA數據集的行列信

    Test_data.shape (20000, 2)

    要養成看數據集的head()以及shape的習慣,這會讓你每一步更放心,導致接下里的連串的錯誤, 如果對自己的pandas等操作不放心,建議執行一步看一下,這樣會有效的方便你進行理解函數并進行操作

    2.3.3 總覽數據概況

  • describe種有每列的統計量,個數count、平均值mean、方差std、最小值min、中位數25% 50% 75% 、以及最大值 看這個信息主要是瞬間掌握數據的大概的范圍以及每個值的異常值的判斷,比如有的時候會發現999 9999 -1 等值這些其實都是nan的另外一種表達方式,有的時候需要注意下
  • info 通過info來了解數據每列的type,有助于了解是否存在除了nan以外的特殊符號異常
  • data.describe()——獲取數據的相關統計量

    data.info()——獲取數據類型

    獲取train數據的相關統計量

    Train_data.describe() id label count 100000.000000 100000.000000 mean 49999.500000 0.856960 std 28867.657797 1.217084 min 0.000000 0.000000 25% 24999.750000 0.000000 50% 49999.500000 0.000000 75% 74999.250000 2.000000 max 99999.000000 3.000000

    獲取train數據類型

    Train_data.info() <bound method DataFrame.info of id heartbeat_signals label 0 0 0.9912297987616655,0.9435330436439665,0.764677... 0.0 1 1 0.9714822034884503,0.9289687459588268,0.572932... 0.0 2 2 1.0,0.9591487564065292,0.7013782792997189,0.23... 2.0 3 3 0.9757952826275774,0.9340884687738161,0.659636... 0.0 4 4 0.0,0.055816398940721094,0.26129357194994196,0... 2.0 ... ... ... ... 99995 99995 1.0,0.677705342021188,0.22239242747868546,0.25... 0.0 99996 99996 0.9268571578157265,0.9063471198026871,0.636993... 2.0 99997 99997 0.9258351628306013,0.5873839035878395,0.633226... 3.0 99998 99998 1.0,0.9947621698382489,0.8297017704865509,0.45... 2.0 99999 99999 0.9259994004527861,0.916476635326053,0.4042900... 0.0[100000 rows x 3 columns]>

    獲取testA數據的相關統計量

    Test_data.describe() id count 20000.000000 mean 109999.500000 std 5773.647028 min 100000.000000 25% 104999.750000 50% 109999.500000 75% 114999.250000 max 119999.000000

    獲取testA數據類型

    Test_data.info() <class 'pandas.core.frame.DataFrame'> RangeIndex: 20000 entries, 0 to 19999 Data columns (total 2 columns):# Column Non-Null Count Dtype --- ------ -------------- ----- 0 id 20000 non-null int64 1 heartbeat_signals 20000 non-null object dtypes: int64(1), object(1) memory usage: 312.6+ KB

    2.3.4 判斷數據缺失和異常

    data.isnull().sum()——查看每列的存在nan情況

    查看trian每列的存在nan情況

    Train_data.isnull().sum() id 0 heartbeat_signals 0 label 0 dtype: int64

    查看testA每列的存在nan情況

    Test_data.isnull().sum() id 0 heartbeat_signals 0 dtype: int64

    2.3.5 了解預測值的分布

    Train_data['label'] 0 0.0 1 0.0 2 4.0 3 0.0 4 0.0... 99995 4.0 99996 0.0 99997 0.0 99998 0.0 99999 1.0 Name: label, Length: 100000, dtype: float64 Train_data['label'].value_counts() 0.0 58883 4.0 19660 2.0 12994 1.0 6522 3.0 1941 Name: label, dtype: int64 ## 1) 總體分布概況(無界約翰遜分布等) import scipy.stats as st y = Train_data['label'] plt.figure(1); plt.title('Default') sns.distplot(y, rug=True, bins=20) plt.figure(2); plt.title('Normal') sns.distplot(y, kde=False, fit=st.norm) plt.figure(3); plt.title('Log Normal') sns.distplot(y, kde=False, fit=st.lognorm) # 2)查看skewness and kurtosis sns.distplot(Train_data['label']); print("Skewness: %f" % Train_data['label'].skew()) print("Kurtosis: %f" % Train_data['label'].kurt()) Skewness: 0.917596 Kurtosis: -0.825276 Train_data.skew(), Train_data.kurt() (id 0.000000label 0.917596dtype: float64, id -1.200000label -0.825276dtype: float64) sns.distplot(Train_data.kurt(),color='orange',axlabel ='Kurtness') ## 3) 查看預測值的具體頻數 plt.hist(Train_data['label'], orientation = 'vertical',histtype = 'bar', color ='red') plt.show()

    2.3.7 用pandas_profiling生成數據報告

    import pandas_profiling pfr = pandas_profiling.ProfileReport(data_train) pfr.to_file("./example.html")

    2.4 總結

    數據探索性分析是我們初步了解數據,熟悉數據為特征工程做準備的階段,甚至很多時候EDA階段提取出來的特征可以直接當作規則來用。可見EDA的重要性,這個階段的主要工作還是借助于各個簡單的統計量來對數據整體的了解,分析各個類型變量相互之間的關系,以及用合適的圖形可視化出來直觀觀察。希望本節內容能給初學者帶來幫助,更期待各位學習者對其中的不足提出建議。

    總結

    以上是生活随笔為你收集整理的【算法竞赛学习】心跳信号分类预测-数据分析的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。