# 一個標準的人類活動識別問題的溫和介紹
> 原文: [https://machinelearningmastery.com/how-to-load-and-explore-a-standard-human-activity-recognition-problem/](https://machinelearningmastery.com/how-to-load-and-explore-a-standard-human-activity-recognition-problem/)
人類活動識別是將由專用線束或智能電話記錄的加速度計數據序列分類為已知的明確定義的運動的問題。
鑒于每秒產生大量觀測結果,觀測的時間性質以及缺乏將加速度計數據與已知運動聯系起來的明確方法,這是一個具有挑戰性的問題。
該問題的經典方法涉及來自基于固定大小窗口的時間序列數據的手工制作特征和訓練機器學習模型,例如決策樹的集合。困難在于此功能工程需要該領域的深厚專業知識。
最近,諸如循環神經網絡和一維卷積神經網絡或 CNN 的深度學習方法已經被證明在很少或沒有數據特征工程的情況下提供具有挑戰性的活動識別任務的最新結果。
在本教程中,您將發現用于時間序列分類的標準人類活動識別數據集以及如何在建模之前探索數據集。
完成本教程后,您將了解:
* 如何加載和準備人類活動識別時間序列分類數據。
* 如何探索和可視化時間序列分類數據,以生成建模的想法。
* 一套用于構建問題,準備數據,建模和評估人類活動識別模型的方法。
讓我們開始吧。

標準人類活動識別問題的溫和介紹
[tgraham](https://www.flickr.com/photos/tgraham/2546626192/) 的照片,保留一些權利。
## 教程概述
本教程分為 8 個部分;他們是:
1. 人類活動識別
2. 問題描述
3. 加載數據集
4. 繪制單個主題的跟蹤
5. 繪制總活動持續時間
6. 繪制每個主題的痕跡
7. 繪制痕量觀測的直方圖
8. 建模問題的方法
## 人類活動識別
[人類活動識別](https://en.wikipedia.org/wiki/Activity_recognition)或簡稱 HAR,是基于使用傳感器的移動痕跡來預測人正在做什么的問題。
運動通常是正常的室內活動,例如站立,坐著,跳躍和上樓梯。傳感器通常位于主體上,例如智能手機或背心,并且經常以三維(x,y,z)記錄加速度計數據。
這個想法是,一旦主體的活動被識別和知道,智能計算機系統就可以提供幫助。
這是一個具有挑戰性的問題,因為沒有明確的分析方法將傳感器數據與一般方式的特定動作聯系起來。由于收集了大量的傳感器數據(例如,每秒數十或數百次觀察),并且在開發預測模型時從這些數據中經典使用手工制作的特征和啟發式,因此在技術上具有挑戰性。
最近,深度學習方法已經在 HAR 問題上取得了成功,因為它們能夠自動學習更高階的特征。
> 基于傳感器的活動識別從大量低水平傳感器讀數中尋找關于人類活動的深刻的高級知識。傳統的模式識別方法在過去幾年中取得了巨大的進步。然而,這些方法通常嚴重依賴于啟發式手工特征提取,這可能會妨礙它們的泛化表現。 [...]最近,深度學習的最新進展使得可以執行自動高級特征提取,從而在許多領域實現了有希望的表現。
- [基于傳感器的活動識別深度學習:調查](https://arxiv.org/abs/1707.03502)
## 問題描述
收集數據集“來自單個胸部安裝的加速度計數據集的 _ 活動識別”并由 Casale,Pujol 等人提供。來自西班牙巴塞羅那大學。_
它可以從 UCI 機器學習庫免費獲得:
* [來自單個胸部加速計數據集](https://archive.ics.uci.edu/ml/datasets/Activity+Recognition+from+Single+Chest-Mounted+Accelerometer),UCI 機器學習庫的活動識別。
在 2011 年論文“[使用可穿戴設備的加速度計數據](https://link.springer.com/chapter/10.1007/978-3-642-21257-4_36)[人類活動識別](https://link.springer.com/chapter/10.1007/978-3-642-21257-4_36)”中描述并使用該數據集作為序列分類模型的基礎。
數據集由來自 15 個不同科目的未校準加速度計數據組成,每個科目執行 7 項活動。每個受試者佩戴定制的胸部加速度計,并以 52Hz(每秒 52 次觀察)收集數據。

每個主題佩戴的定制胸部系統的照片。
取自“使用可穿戴設備從加速度計數據中識別人體活動”。
每個受試者以連續的順序進行和記錄七項活動。
所開展的具體活動包括:
* 1:在計算機工作(workingPC)。
* 2:站起來,走路,上下樓梯。
* 3:站立(站立)。
* 4:散步(醒來)。
* 5:上/下樓梯(樓梯)。
* 6:與某人散步和交談。
* 7:站立時說話(說話)。
該論文使用了數據的一個子集,特別是 14 個主題和 5 個活動。目前尚不清楚為什么沒有使用其他 2 項活動(2 和 6)。
> 數據來自 14 名測試者,3 名女性和 11 名年齡在 27 歲至 35 歲之間的男性。[...]所收集的數據由上下樓梯步行 33 分鐘,步行 82 分鐘,說話 115 分鐘組成。保持站立的分鐘數和 86 分鐘的電腦工作時間。
- [使用可穿戴設備從加速計數據識別人類活動](https://link.springer.com/chapter/10.1007/978-3-642-21257-4_36),2011。
本文的重點是從數據開發手工制作的功能,以及機器學習算法的開發。
數據被分成一秒鐘的觀察窗口(52),窗口之間有 50%的重疊。
> 我們使用 52 個樣本的窗口從數據中提取特征,對應于 1 秒的加速度計數據,窗口之間有 50%的重疊。從每個窗口,我們建議提取以下特征:窗口中加速度積分的均方根值,以及 Minmax 和的平均值。 [...]盡管如此,為了完成這組特征,我們添加了已被證明對人類活動識別有用的特征,如:平均值,標準偏差,偏度,峰度,加速度計軸的每對成對之間的相關性(不包括幅度) ,七級小波分解系數的能量。通過這種方式,我們獲得了 319 維特征向量。
- [使用可穿戴設備從加速計數據識別人類活動](https://link.springer.com/chapter/10.1007/978-3-642-21257-4_36),2011。
使用 5 倍交叉驗證擬合和評估一套機器學習模型,并獲得 94%的準確度。

隨機森林的混淆矩陣在數據集上進行評估。
取自“使用可穿戴設備從加速度計數據中識別人體活動”。
## 加載數據集
數據集可以直接從 UCI 機器學習庫下載。
* [下載數據集](https://archive.ics.uci.edu/ml/machine-learning-databases/00287/Activity%20Recognition%20from%20Single%20Chest-Mounted%20Accelerometer.zip)
將數據集解壓縮到名為“ _HAR_ ”的新目錄中。
該目錄包含 CSV 文件列表,每個主題一個(1-15)和自述文件。
每個文件包含 5 列,行號,x,y 和 z 加速度計讀數以及 0 到 7 的類號,其中類 0 表示“無活動”,類 1-7 對應于上一節中列出的活動。
例如,下面是文件“ _1.csv_ ”的前 5 行:
```py
0,1502,2215,2153,1
1,1667,2072,2047,1
2,1611,1957,1906,1
3,1601,1939,1831,1
4,1643,1965,1879,1
...
```
首先,我們可以將每個文件作為單個 NumPy 數組加載并刪除第一列。
下面名為 _load_dataset()_ 的函數將加載 HAR 目錄中的所有 CSV 文件,刪除第一列并返回 15 個 NumPy 數組的列表。
```py
# load sequence for each subject, returns a list of numpy arrays
def load_dataset(prefix=''):
subjects = list()
directory = prefix + 'HAR/'
for name in listdir(directory):
filename = directory + '/' + name
if not filename.endswith('.csv'):
continue
df = read_csv(filename, header=None)
# drop row number
values = df.values[:, 1:]
subjects.append(values)
return subjects
```
下面列出了完整的示例。
```py
# load dataset
from os import listdir
from pandas import read_csv
# load sequence for each subject, returns a list of numpy arrays
def load_dataset(prefix=''):
subjects = list()
directory = prefix + 'HAR/'
for name in listdir(directory):
filename = directory + '/' + name
if not filename.endswith('.csv'):
continue
df = read_csv(filename, header=None)
# drop row number
values = df.values[:, 1:]
subjects.append(values)
return subjects
# load
subjects = load_dataset()
print('Loaded %d subjects' % len(subjects))
```
運行該示例將加載所有數據并打印已加載主題的數量。
```py
Loaded 15 subjects
```
注意,目錄中的文件是按文件順序導航的,這可能與主題順序不同,例如 _10.csv_ 以文件順序出現在 _2.csv_ 之前。我相信這在本教程中無關緊要。
現在我們知道了如何加載數據,我們可以通過一些可視化來探索它。
## 繪制單個主題的跟蹤
良好的第一個可視化是繪制單個主題的數據。
我們可以為給定主題的每個變量創建一個圖形,包括 x,y 和 z 加速度計數據,以及相關的類類值。
下面的函數 _plot_subject()_ 將繪制給定主題的數據。
```py
# plot the x, y, z acceleration and activities for a single subject
def plot_subject(subject):
pyplot.figure()
# create a plot for each column
for col in range(subject.shape[1]):
pyplot.subplot(subject.shape[1], 1, col+1)
pyplot.plot(subject[:,col])
pyplot.show()
```
我們可以將它與上一節中的數據加載結合起來,并繪制第一個加載主題的數據。
```py
# plot a subject
from os import listdir
from pandas import read_csv
from matplotlib import pyplot
# load sequence for each subject, returns a list of numpy arrays
def load_dataset(prefix=''):
subjects = list()
directory = prefix + 'HAR/'
for name in listdir(directory):
filename = directory + '/' + name
if not filename.endswith('.csv'):
continue
df = read_csv(filename, header=None)
# drop row number
values = df.values[:, 1:]
subjects.append(values)
return subjects
# plot the x, y, z acceleration and activities for a single subject
def plot_subject(subject):
pyplot.figure()
# create a plot for each column
for col in range(subject.shape[1]):
pyplot.subplot(subject.shape[1], 1, col+1)
pyplot.plot(subject[:,col])
pyplot.show()
# load
subjects = load_dataset()
print('Loaded %d subjects' % len(subjects))
# plot activities for a single subject
plot_subject(subjects[0])
```
運行該示例為第一個加載主題的每個變量創建一個線圖。
我們可以在序列的開頭看到一些非常大的運動,這可能是一個可以被刪除的異常或異常行為。
我們還可以看到主題多次執行某些操作。例如,仔細查看類變量的圖(底部圖)表明受試者按以下順序執行活動:1,2,0,3,0,4,3,5,3,6,7。活動 3 進行了兩次。

第一個加載主題的 x,y,z 和類的線圖。
我們可以重新運行此代碼并繪制第二個加載的主題(可能是 _10.csv_ )。
```py
...
# plot activities for a single subject
plot_subject(subjects[1])
```
運行該示例會創建一個類似的圖。
我們可以看到更多細節,這表明在上一個情節開頭看到的大異常值可能是從該主題的痕跡中清除了值。
我們看到類似的活動序列,活動 3 再次發生兩次。
我們還可以看到,某些活動的執行時間比其他活動長得多。這可能會影響模型區分活動的能力,例如:兩個受試者的活動 3(站立)相對于所進行的其他活動具有非常少的數據。

第二個加載主題的 x,y,z 和類的線圖。
## 繪制總活動持續時間
上一節提出了一個問題,即我們對所有主題的每項活動進行了多長時間或多少次觀察。
如果一項活動的數據多于另一項活動,這可能很重要,這表明不太好的活動可能難以建模。
我們可以通過按活動和主題對所有觀察進行分組來研究這一點,并繪制分布圖。這將了解每個主題在跟蹤過程中花費多長時間執行每項活動。
首先,我們可以為每個主題分組活動。
我們可以通過為每個主題創建字典并按活動存儲所有跟蹤數據來完成此操作。下面的 _group_by_activity()_ 功能將為每個主題執行此分組。
```py
# returns a list of dict, where each dict has one sequence per activity
def group_by_activity(subjects, activities):
grouped = [{a:s[s[:,-1]==a] for a in activities} for s in subjects]
return grouped
```
接下來,我們可以計算每個主題的每個活動的總持續時間。
我們知道加速度計數據是以 52Hz 記錄的,因此我們可以將每個活動的每個跟蹤的長度除以 52,以便以秒為單位總結持續時間。
以下名為 _plot_durations()_ 的函數將計算每個主題的每個活動的持續時間,并將結果繪制為箱線圖。盒狀和須狀圖是總結每個活動的 15 個持續時間的有用方式,因為它描述了持續時間的擴展而不假設分布。
```py
# calculate total duration in sec for each activity per subject and plot
def plot_durations(grouped, activities):
# calculate the lengths for each activity for each subject
freq = 52
durations = [[len(s[a])/freq for s in grouped] for a in activities]
pyplot.boxplot(durations, labels=activities)
pyplot.show()
```
下面列出了繪制活動持續時間分布的完整示例。
```py
# durations by activity
from os import listdir
from pandas import read_csv
from matplotlib import pyplot
# load sequence for each subject, returns a list of numpy arrays
def load_dataset(prefix=''):
subjects = list()
directory = prefix + 'HAR/'
for name in listdir(directory):
filename = directory + '/' + name
if not filename.endswith('.csv'):
continue
df = read_csv(filename, header=None)
# drop row number
values = df.values[:, 1:]
subjects.append(values)
return subjects
# returns a list of dict, where each dict has one sequence per activity
def group_by_activity(subjects, activities):
grouped = [{a:s[s[:,-1]==a] for a in activities} for s in subjects]
return grouped
# calculate total duration in sec for each activity per subject and plot
def plot_durations(grouped, activities):
# calculate the lengths for each activity for each subject
freq = 52
durations = [[len(s[a])/freq for s in grouped] for a in activities]
pyplot.boxplot(durations, labels=activities)
pyplot.show()
# load
subjects = load_dataset()
print('Loaded %d subjects' % len(subjects))
# group traces by activity for each subject
activities = [i for i in range(0,8)]
grouped = group_by_activity(subjects, activities)
# plot durations
plot_durations(grouped, activities)
```
運行該示例繪制了每個主題的活動持續時間的分布。
我們可以看到,對于活動 0(無活動),2(站立,行走和上下樓梯),5(上/下樓梯)和 6(步行和說話)的觀察相對較少。
這可能表明為什么活動 2 和 6 被排除在原始論文的實驗之外。
我們還可以看到每個主題在活動 1(站立,行走和上下樓梯)和活動 7(站立時說話)上花費了大量時間。這些活動可能過多。準備模型數據可能有益于對這些活動進行欠采樣或對其他活動進行采樣。

每個受試者活動持續時間分布的箱線圖
## 繪制每個主題的痕跡
接下來,查看每個主題的跟蹤數據可能會很有趣。
一種方法是在單個圖形上繪制單個主題的所有跡線,然后垂直排列所有圖形。這將允許跨主題和主題內的痕跡進行比較。
以下名為 _plot_subjects()_ 的函數將在單獨的圖上繪制 15 個主題中每個主題的加速度計數據。每個 x,y 和 z 數據的跡線分別繪制為橙色,綠色和藍色。
```py
# plot the x, y, z acceleration for each subject
def plot_subjects(subjects):
pyplot.figure()
# create a plot for each subject
for i in range(len(subjects)):
pyplot.subplot(len(subjects), 1, i+1)
# plot each of x, y and z
for j in range(subjects[i].shape[1]-1):
pyplot.plot(subjects[i][:,j])
pyplot.show()
```
下面列出了完整的示例。
```py
# plot accelerometer data for all subjects
from os import listdir
from pandas import read_csv
from matplotlib import pyplot
# load sequence for each subject, returns a list of numpy arrays
def load_dataset(prefix=''):
subjects = list()
directory = prefix + 'HAR/'
for name in listdir(directory):
filename = directory + '/' + name
if not filename.endswith('.csv'):
continue
df = read_csv(filename, header=None)
# drop row number
values = df.values[:, 1:]
subjects.append(values)
return subjects
# plot the x, y, z acceleration for each subject
def plot_subjects(subjects):
pyplot.figure()
# create a plot for each subject
for i in range(len(subjects)):
pyplot.subplot(len(subjects), 1, i+1)
# plot each of x, y and z
for j in range(subjects[i].shape[1]-1):
pyplot.plot(subjects[i][:,j])
pyplot.show()
# load
subjects = load_dataset()
print('Loaded %d subjects' % len(subjects))
# plot trace data for each subject
plot_subjects(subjects)
```
運行該示例將創建一個包含 15 個圖的圖形。
我們正在研究一般而非具體的趨勢。
* 我們可以看到很多橙色和綠色以及非常小的藍色,這表明 z 數據在建模這個問題時可能不太重要。
* 我們可以看到跟蹤數據在 x 和 y 跟蹤的相同時間發生相同的一般變化,這表明可能只需要一個數據軸來擬合預測模型。
* 我們可以看到每個受試者在序列開始時(前 60 秒)在跡線中具有相同的大尖峰,可能與實驗的啟動有關。
* 我們可以在跟蹤數據中看到跨主題的類似結構,盡管某些跡線看起來比其他跡線更柔和,例如比較第一和第二個圖上的幅度。
每個受試者可具有不同的完整跡線長度,因此通過 x 軸的直接比較可能是不合理的(例如,同時執行類似的活動)。無論如何,我們并不真正關心這個問題。

所有 15 名受試者的加速度計跟蹤數據的線圖。
痕跡似乎具有相同的一般比例,但受試者之間的幅度差異表明,每個受試者重新縮放數據可能比跨受試者縮放更有意義。
這對于訓練數據可能是有意義的,但對于縮放測試對象的數據可能在方法上具有挑戰性。它需要或假設在預測活動之前可以獲得整個跟蹤。這對于模型的離線使用很好,但不能在線使用模型。它還表明,使用預先校準的跟蹤數據(例如以固定規模進入的數據)可以更容易地在線使用模型。
## 繪制痕量觀測的直方圖
上一節中關于跨不同主題的顯著不同尺度可能性的觀點可能會給這個數據集的建模帶來挑戰。
我們可以通過繪制加速度計數據的每個軸的觀測分布的直方圖來探索這一點。
與上一節一樣,我們可以為每個主題創建一個繪圖,然后將所有主題的繪圖與相同的 x 軸垂直對齊,以幫助發現展開的明顯差異。
更新的 _plot_subjects()_ 函數用于繪制直方圖而不是線圖,如下所示。 _hist()_ 函數用于為加速度計數據的每個軸創建直方圖,并且使用大量箱(100)來幫助展開圖中的數據。子圖也都共享相同的 x 軸以幫助進行比較。
```py
# plot the x, y, z acceleration for each subject
def plot_subjects(subjects):
pyplot.figure()
# create a plot for each subject
xaxis = None
for i in range(len(subjects)):
ax = pyplot.subplot(len(subjects), 1, i+1, sharex=xaxis)
if i == 0:
xaxis = ax
# plot a histogram of x data
for j in range(subjects[i].shape[1]-1):
pyplot.hist(subjects[i][:,j], bins=100)
pyplot.show()
```
下面列出了完整的示例
```py
# plot histograms of trace data for all subjects
from os import listdir
from pandas import read_csv
from matplotlib import pyplot
# load sequence for each subject, returns a list of numpy arrays
def load_dataset(prefix=''):
subjects = list()
directory = prefix + 'HAR/'
for name in listdir(directory):
filename = directory + '/' + name
if not filename.endswith('.csv'):
continue
df = read_csv(filename, header=None)
# drop row number
values = df.values[:, 1:]
subjects.append(values)
return subjects
# plot the x, y, z acceleration for each subject
def plot_subjects(subjects):
pyplot.figure()
# create a plot for each subject
xaxis = None
for i in range(len(subjects)):
ax = pyplot.subplot(len(subjects), 1, i+1, sharex=xaxis)
if i == 0:
xaxis = ax
# plot a histogram of x data
for j in range(subjects[i].shape[1]-1):
pyplot.hist(subjects[i][:,j], bins=100)
pyplot.show()
# load
subjects = load_dataset()
print('Loaded %d subjects' % len(subjects))
# plot trace data for each subject
plot_subjects(subjects)
```
運行該示例將創建一個包含 15 個圖的單個圖形,每個圖形對應一個圖形,以及每個圖表的 3 個加速度計數據的 3 個直方圖。
藍色,橙色和綠色三種顏色代表 x,y 和 z 軸。
該圖表明加速度計的每個軸的分布是高斯分布或者非常接近高斯分布。這可以幫助沿著加速度計數據的每個軸進行簡單的離群值檢測和移除。
該圖確實有助于顯示主題內的分布與主題之間的分布差異。
在每個主題內,共同模式是 x(藍色)和 z(綠色)一起分組到左邊,y 數據(橙色)分開到右邊。 y 的分布通常更尖銳,因為 x 和 z 的分布更平坦。
在整個主題中,我們可以看到一般的聚類值約為 2,000(無論單位是多少),盡管有很多差異。這種顯著的分布差異確實表明在執行任何跨主題建模之前,需要至少標準化(轉換為零均值和單位方差)每個軸和每個主體的數據。

每個受試者的加速度計數據的直方圖
## 建模問題的方法
在本節中,我們將基于對數據集的上述探索,探索針對該問題的數據準備和建模的一些想法和方法。
這些可能有助于特別是對該數據集建模,但也有助于人類活動識別,甚至是一般的時間序列分類問題。
### 問題框架
盡管所有方法都圍繞時間序列分類的思想,但有許多方法可以將數據構建為預測建模問題。
要考慮的兩種主要方法是:
* **每個受試者**:每個受試者的痕量數據的模型活動分類。
* **交叉主題**:跨主題的跟蹤數據的模型活動分類。
后者,交叉主題,是更理想的,但如果目標是深刻理解給定的主題,例如前者也可能是有趣的。家中的個性化模型。
在建模過程中構建數據的兩種主要方法包括:
* **分段活動**:跟蹤數據可以按活動預先分段,并且可以針對每個活動對整個跟蹤或其特征進行訓練的模型。
* **滑動窗口**:每個主體的連續軌跡被分成滑動窗口,有或沒有重疊,窗口的每個活動的模式被視為要預測的活動。
就模型的實際使用而言,前一種方法可能不太現實,但可能是更容易建模的問題。后者是原始論文中使用的問題的框架,其中制備了具有 50%重疊的 1 秒窗口。
我沒有看到問題框架中的重疊的好處,除了加倍訓練數據集的大小,這可能有益于深度神經網絡。事實上,我預計它可能會導致過度模型。
### 數據準備
數據表明在建模過程中可能有用的一些準備方案:
* 將加速度計觀測值下采樣到幾分之一秒可能是有幫助的,例如, 1 / 4,1 / 2,1,2 秒。
* 截斷原始數據的前 60 秒可能是謹慎的,因為它似乎與實驗的啟動有關,并且所有主體當時正在執行活動 1(在計算機上工作)。
* 使用簡單的離群值檢測和去除方法(例如,每個軸的平均值的標準差的 3 到 4 倍的值)可能是有用的。
* 也許刪除具有相對較少觀察的活動將是明智的,或者導致對預測方法(例如,活動 0,2 和 6)的更公平的評估。
* 也許通過對代表性不足的活動進行過度采樣或對訓練數據集中過度代表的活動進行抽樣調整來重新平衡活動可能有助于建模。
* 嘗試不同的窗口尺寸將是有趣的(例如 1,5,10,30 秒),尤其是在對觀察的下采樣的確證中。
* 對于任何跨主題模型,幾乎肯定需要標準化每個主題的數據。在每個受試者標準化后對受試者的數據進行標準化也可能是有用的。
如前一節所述,每個主題的數據標準化確實引入了方法問題,并且無論如何都可以使用,因為需要來自原始硬件系統的校準觀察。
### 問題建模
我建議使用神經網絡來探索這個問題。
與使用特征工程和特定于域的手工制作特征的論文中使用的方法不同,直接對原始數據進行建模(下采樣或其他方式)將是有用且通用的。
首先,我建議使用強大的方法(如隨機森林或梯度增強機器)發現表現基線。然后探索特別適合時間序列分類問題的神經網絡方法。
可能適合的兩種類型的神經網絡架構是:
* 卷積神經網絡或 CNN。
* 循環神經網絡或 RNN,特別是長短期記憶或 LSTM。
第三個是兩者的混合:
* CNN LSTMs。
CNN 能夠從輸入序列中提取特征,例如輸入加速度計數據的窗口。諸如 LSTM 之類的 RNN 能夠直接從長序列的輸入數據中學習,并學習數據中的長期關系。
我希望序列數據中幾乎沒有因果關系,除了每個主題看起來他們正在執行相同的人為行動序列,我們不想學習。樸素地,這可能表明 CNN 更適合于在給定一系列觀察到的加速度計數據的情況下預測活動。
一維 CNN 已廣泛用于此類問題,其中一個通道用于加速度計數據的每個軸。一個很好的簡單起點是直接在序列數據的窗口上擬合 CNN 模型。這是 2014 年題為“[使用移動傳感器進行人類活動識別的卷積神經網絡](https://ieeexplore.ieee.org/abstract/document/7026300/)”的論文中描述的方法,并且從下面的圖中可以看出更清楚。

用于人類活動識別的 1D CNN 架構的示例
取自“使用移動傳感器的用于人類活動識別的卷積神經網絡”。
CNN LSTM 可用于 CNN 學習觀察子序列的表示,然后 LSTM 學習這些子序列。
例如,CNN 可以提取一秒鐘的加速度計數據,然后可以重復 30 秒,以向 LSTM 提供 30 個 CNN 解釋數據的時間步長。
我希望這三個方法對這個問題和類似的問題都很有意思。
### 模型評估
我不認為窗口的重疊是有用的,并且實際上如果在交叉驗證期間跟蹤數據的部分在訓練和測試數據集中都可用,則實際上可能導致輕微的誤導性結果。然而,它會增加訓練數據的數量。
我認為重要的是將數據暴露給模型,同時保持觀察的時間順序。對于給定主題,來自單個活動的多個窗口可能看起來相似,并且隨機改組和分離窗口以訓練測試數據可能導致誤導結果。
我不建議在原始論文中使用隨機改組的 k-fold 交叉驗證。我希望這會帶來樂觀的結果,每個 15 個主題的痕跡中有一秒鐘的數據窗口混合在一起進行訓練和測試。
也許對這些數據中的模型進行公平評估將是按主題使用留一法交叉驗證或 LOOCV。這是模型適合前 14 個主題并在第 15 個主題的所有窗口上進行評估的地方。重復該過程,其中每個受試者有機會被用作保持測試數據集。
按主題分割數據集避免了在模型評估期間與各個窗口的時間排序相關的任何問題,因為所有窗口都將保證新的/看不見的數據。
如果你探索這些建模思想中的任何一個,我很想知道。
## 進一步閱讀
如果您希望深入了解,本節將提供有關該主題的更多資源。
### 文件
* [使用加速度計進行活動識別的綜合研究](http://mdpi.com/2227-9709/5/2/27),2018
* [基于傳感器的活動識別深度學習:調查](https://arxiv.org/abs/1707.03502),2017。
* [使用可穿戴設備從加速度計數據識別人類活動](https://link.springer.com/chapter/10.1007/978-3-642-21257-4_36),2011。
* [用于使用移動傳感器識別人類活動的卷積神經網絡](https://ieeexplore.ieee.org/abstract/document/7026300/),2014。
### API
* [sklearn.preprocessing.StandardScaler API](http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.StandardScaler.html)
* [sklearn.preprocessing.MinMaxScaler API](http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.MinMaxScaler.html)
* [keras.utils.to_categorical API](https://keras.io/utils/#to_categorical)
* [Keras 卷積層](https://keras.io/layers/convolutional/)
### 用品
* [活動識別,維基百科](https://en.wikipedia.org/wiki/Activity_recognition)
* [來自單個胸部加速計數據集](https://archive.ics.uci.edu/ml/datasets/Activity+Recognition+from+Single+Chest-Mounted+Accelerometer),UCI 機器學習庫的活動識別。
## 摘要
在本教程中,您發現了一個用于時間序列分類的標準人類活動識別數據集。
具體來說,你學到了:
* 如何加載和準備人類活動識別時間序列分類數據。
* 如何探索和可視化時間序列分類數據,以生成建模的想法。
* 一套用于構建問題,準備數據,建模和評估人類活動識別模型的方法。
你有任何問題嗎?
在下面的評論中提出您的問題,我會盡力回答。
- Machine Learning Mastery 應用機器學習教程
- 5競爭機器學習的好處
- 過度擬合的簡單直覺,或者為什么測試訓練數據是一個壞主意
- 特征選擇簡介
- 應用機器學習作為一個搜索問題的溫和介紹
- 為什么應用機器學習很難
- 為什么我的結果不如我想的那么好?你可能過度擬合了
- 用ROC曲線評估和比較分類器表現
- BigML評論:發現本機學習即服務平臺的聰明功能
- BigML教程:開發您的第一個決策樹并進行預測
- 構建生產機器學習基礎設施
- 分類準確性不夠:可以使用更多表現測量
- 一種預測模型的巧妙應用
- 機器學習項目中常見的陷阱
- 數據清理:將凌亂的數據轉換為整潔的數據
- 機器學習中的數據泄漏
- 數據,學習和建模
- 數據管理至關重要以及為什么需要認真對待它
- 將預測模型部署到生產中
- 參數和超參數之間有什么區別?
- 測試和驗證數據集之間有什么區別?
- 發現特征工程,如何設計特征以及如何獲得它
- 如何開始使用Kaggle
- 超越預測
- 如何在評估機器學習算法時選擇正確的測試選項
- 如何定義機器學習問題
- 如何評估機器學習算法
- 如何獲得基線結果及其重要性
- 如何充分利用機器學習數據
- 如何識別數據中的異常值
- 如何提高機器學習效果
- 如何在競爭機器學習中踢屁股
- 如何知道您的機器學習模型是否具有良好的表現
- 如何布局和管理您的機器學習項目
- 如何為機器學習準備數據
- 如何減少最終機器學習模型中的方差
- 如何使用機器學習結果
- 如何解決像數據科學家這樣的問題
- 通過數據預處理提高模型精度
- 處理機器學習的大數據文件的7種方法
- 建立機器學習系統的經驗教訓
- 如何使用機器學習清單可靠地獲得準確的預測(即使您是初學者)
- 機器學習模型運行期間要做什么
- 機器學習表現改進備忘單
- 來自世界級從業者的機器學習技巧:Phil Brierley
- 模型預測精度與機器學習中的解釋
- 競爭機器學習的模型選擇技巧
- 機器學習需要多少訓練數據?
- 如何系統地規劃和運行機器學習實驗
- 應用機器學習過程
- 默認情況下可重現的機器學習結果
- 10個實踐應用機器學習的標準數據集
- 簡單的三步法到最佳機器學習算法
- 打擊機器學習數據集中不平衡類的8種策略
- 模型表現不匹配問題(以及如何處理)
- 黑箱機器學習的誘惑陷阱
- 如何培養最終的機器學習模型
- 使用探索性數據分析了解您的問題并獲得更好的結果
- 什么是數據挖掘和KDD
- 為什么One-Hot在機器學習中編碼數據?
- 為什么你應該在你的機器學習問題上進行抽樣檢查算法
- 所以,你正在研究機器學習問題......
- Machine Learning Mastery Keras 深度學習教程
- Keras 中神經網絡模型的 5 步生命周期
- 在 Python 迷你課程中應用深度學習
- Keras 深度學習庫的二元分類教程
- 如何用 Keras 構建多層感知器神經網絡模型
- 如何在 Keras 中檢查深度學習模型
- 10 個用于 Amazon Web Services 深度學習的命令行秘籍
- 機器學習卷積神經網絡的速成課程
- 如何在 Python 中使用 Keras 進行深度學習的度量
- 深度學習書籍
- 深度學習課程
- 你所知道的深度學習是一種謊言
- 如何設置 Amazon AWS EC2 GPU 以訓練 Keras 深度學習模型(分步)
- 神經網絡中批量和迭代之間的區別是什么?
- 在 Keras 展示深度學習模型訓練歷史
- 基于 Keras 的深度學習模型中的dropout正則化
- 評估 Keras 中深度學習模型的表現
- 如何評價深度學習模型的技巧
- 小批量梯度下降的簡要介紹以及如何配置批量大小
- 在 Keras 中獲得深度學習幫助的 9 種方法
- 如何使用 Keras 在 Python 中網格搜索深度學習模型的超參數
- 用 Keras 在 Python 中使用卷積神經網絡進行手寫數字識別
- 如何用 Keras 進行預測
- 用 Keras 進行深度學習的圖像增強
- 8 個深度學習的鼓舞人心的應用
- Python 深度學習庫 Keras 簡介
- Python 深度學習庫 TensorFlow 簡介
- Python 深度學習庫 Theano 簡介
- 如何使用 Keras 函數式 API 進行深度學習
- Keras 深度學習庫的多類分類教程
- 多層感知器神經網絡速成課程
- 基于卷積神經網絡的 Keras 深度學習庫中的目標識別
- 流行的深度學習庫
- 用深度學習預測電影評論的情感
- Python 中的 Keras 深度學習庫的回歸教程
- 如何使用 Keras 獲得可重現的結果
- 如何在 Linux 服務器上運行深度學習實驗
- 保存并加載您的 Keras 深度學習模型
- 用 Keras 逐步開發 Python 中的第一個神經網絡
- 用 Keras 理解 Python 中的有狀態 LSTM 循環神經網絡
- 在 Python 中使用 Keras 深度學習模型和 Scikit-Learn
- 如何使用預訓練的 VGG 模型對照片中的物體進行分類
- 在 Python 和 Keras 中對深度學習模型使用學習率調度
- 如何在 Keras 中可視化深度學習神經網絡模型
- 什么是深度學習?
- 何時使用 MLP,CNN 和 RNN 神經網絡
- 為什么用隨機權重初始化神經網絡?
- Machine Learning Mastery 深度學習 NLP 教程
- 深度學習在自然語言處理中的 7 個應用
- 如何實現自然語言處理的波束搜索解碼器
- 深度學習文檔分類的最佳實踐
- 關于自然語言處理的熱門書籍
- 在 Python 中計算文本 BLEU 分數的溫和介紹
- 使用編碼器 - 解碼器模型的用于字幕生成的注入和合并架構
- 如何用 Python 清理機器學習的文本
- 如何配置神經機器翻譯的編碼器 - 解碼器模型
- 如何開始深度學習自然語言處理(7 天迷你課程)
- 自然語言處理的數據集
- 如何開發一種深度學習的詞袋模型來預測電影評論情感
- 深度學習字幕生成模型的溫和介紹
- 如何在 Keras 中定義神經機器翻譯的編碼器 - 解碼器序列 - 序列模型
- 如何利用小實驗在 Keras 中開發字幕生成模型
- 如何從頭開發深度學習圖片標題生成器
- 如何在 Keras 中開發基于字符的神經語言模型
- 如何開發用于情感分析的 N-gram 多通道卷積神經網絡
- 如何從零開始開發神經機器翻譯系統
- 如何在 Python 中用 Keras 開發基于單詞的神經語言模型
- 如何開發一種預測電影評論情感的詞嵌入模型
- 如何使用 Gensim 在 Python 中開發詞嵌入
- 用于文本摘要的編碼器 - 解碼器深度學習模型
- Keras 中文本摘要的編碼器 - 解碼器模型
- 用于神經機器翻譯的編碼器 - 解碼器循環神經網絡模型
- 淺談詞袋模型
- 文本摘要的溫和介紹
- 編碼器 - 解碼器循環神經網絡中的注意力如何工作
- 如何利用深度學習自動生成照片的文本描述
- 如何開發一個單詞級神經語言模型并用它來生成文本
- 淺談神經機器翻譯
- 什么是自然語言處理?
- 牛津自然語言處理深度學習課程
- 如何為機器翻譯準備法語到英語的數據集
- 如何為情感分析準備電影評論數據
- 如何為文本摘要準備新聞文章
- 如何準備照片標題數據集以訓練深度學習模型
- 如何使用 Keras 為深度學習準備文本數據
- 如何使用 scikit-learn 為機器學習準備文本數據
- 自然語言處理神經網絡模型入門
- 對自然語言處理的深度學習的承諾
- 在 Python 中用 Keras 進行 LSTM 循環神經網絡的序列分類
- 斯坦福自然語言處理深度學習課程評價
- 統計語言建模和神經語言模型的簡要介紹
- 使用 Keras 在 Python 中進行 LSTM 循環神經網絡的文本生成
- 淺談機器學習中的轉換
- 如何使用 Keras 將詞嵌入層用于深度學習
- 什么是用于文本的詞嵌入
- Machine Learning Mastery 深度學習時間序列教程
- 如何開發人類活動識別的一維卷積神經網絡模型
- 人類活動識別的深度學習模型
- 如何評估人類活動識別的機器學習算法
- 時間序列預測的多層感知器網絡探索性配置
- 比較經典和機器學習方法進行時間序列預測的結果
- 如何通過深度學習快速獲得時間序列預測的結果
- 如何利用 Python 處理序列預測問題中的缺失時間步長
- 如何建立預測大氣污染日的概率預測模型
- 如何開發一種熟練的機器學習時間序列預測模型
- 如何構建家庭用電自回歸預測模型
- 如何開發多步空氣污染時間序列預測的自回歸預測模型
- 如何制定多站點多元空氣污染時間序列預測的基線預測
- 如何開發時間序列預測的卷積神經網絡模型
- 如何開發卷積神經網絡用于多步時間序列預測
- 如何開發單變量時間序列預測的深度學習模型
- 如何開發 LSTM 模型用于家庭用電的多步時間序列預測
- 如何開發 LSTM 模型進行時間序列預測
- 如何開發多元多步空氣污染時間序列預測的機器學習模型
- 如何開發多層感知器模型進行時間序列預測
- 如何開發人類活動識別時間序列分類的 RNN 模型
- 如何開始深度學習的時間序列預測(7 天迷你課程)
- 如何網格搜索深度學習模型進行時間序列預測
- 如何對單變量時間序列預測的網格搜索樸素方法
- 如何在 Python 中搜索 SARIMA 模型超參數用于時間序列預測
- 如何在 Python 中進行時間序列預測的網格搜索三次指數平滑
- 一個標準的人類活動識別問題的溫和介紹
- 如何加載和探索家庭用電數據
- 如何加載,可視化和探索復雜的多變量多步時間序列預測數據集
- 如何從智能手機數據模擬人類活動
- 如何根據環境因素預測房間占用率
- 如何使用腦波預測人眼是開放還是閉合
- 如何在 Python 中擴展長短期內存網絡的數據
- 如何使用 TimeseriesGenerator 進行 Keras 中的時間序列預測
- 基于機器學習算法的室內運動時間序列分類
- 用于時間序列預測的狀態 LSTM 在線學習的不穩定性
- 用于罕見事件時間序列預測的 LSTM 模型體系結構
- 用于時間序列預測的 4 種通用機器學習數據變換
- Python 中長短期記憶網絡的多步時間序列預測
- 家庭用電機器學習的多步時間序列預測
- Keras 中 LSTM 的多變量時間序列預測
- 如何開發和評估樸素的家庭用電量預測方法
- 如何為長短期記憶網絡準備單變量時間序列數據
- 循環神經網絡在時間序列預測中的應用
- 如何在 Python 中使用差異變換刪除趨勢和季節性
- 如何在 LSTM 中種子狀態用于 Python 中的時間序列預測
- 使用 Python 進行時間序列預測的有狀態和無狀態 LSTM
- 長短時記憶網絡在時間序列預測中的適用性
- 時間序列預測問題的分類
- Python 中長短期記憶網絡的時間序列預測
- 基于 Keras 的 Python 中 LSTM 循環神經網絡的時間序列預測
- Keras 中深度學習的時間序列預測
- 如何用 Keras 調整 LSTM 超參數進行時間序列預測
- 如何在時間序列預測訓練期間更新 LSTM 網絡
- 如何使用 LSTM 網絡的 Dropout 進行時間序列預測
- 如何使用 LSTM 網絡中的特征進行時間序列預測
- 如何在 LSTM 網絡中使用時間序列進行時間序列預測
- 如何利用 LSTM 網絡進行權重正則化進行時間序列預測
- Machine Learning Mastery 線性代數教程
- 機器學習數學符號的基礎知識
- 用 NumPy 陣列輕松介紹廣播
- 如何從 Python 中的 Scratch 計算主成分分析(PCA)
- 用于編碼器審查的計算線性代數
- 10 機器學習中的線性代數示例
- 線性代數的溫和介紹
- 用 NumPy 輕松介紹 Python 中的 N 維數組
- 機器學習向量的溫和介紹
- 如何在 Python 中為機器學習索引,切片和重塑 NumPy 數組
- 機器學習的矩陣和矩陣算法簡介
- 溫和地介紹機器學習的特征分解,特征值和特征向量
- NumPy 對預期價值,方差和協方差的簡要介紹
- 機器學習矩陣分解的溫和介紹
- 用 NumPy 輕松介紹機器學習的張量
- 用于機器學習的線性代數中的矩陣類型簡介
- 用于機器學習的線性代數備忘單
- 線性代數的深度學習
- 用于機器學習的線性代數(7 天迷你課程)
- 機器學習的線性代數
- 機器學習矩陣運算的溫和介紹
- 線性代數評論沒有廢話指南
- 學習機器學習線性代數的主要資源
- 淺談機器學習的奇異值分解
- 如何用線性代數求解線性回歸
- 用于機器學習的稀疏矩陣的溫和介紹
- 機器學習中向量規范的溫和介紹
- 學習線性代數用于機器學習的 5 個理由
- Machine Learning Mastery LSTM 教程
- Keras中長短期記憶模型的5步生命周期
- 長短時記憶循環神經網絡的注意事項
- CNN長短期記憶網絡
- 逆向神經網絡中的深度學習速成課程
- 可變長度輸入序列的數據準備
- 如何用Keras開發用于Python序列分類的雙向LSTM
- 如何開發Keras序列到序列預測的編碼器 - 解碼器模型
- 如何診斷LSTM模型的過度擬合和欠擬合
- 如何開發一種編碼器 - 解碼器模型,注重Keras中的序列到序列預測
- 編碼器 - 解碼器長短期存儲器網絡
- 神經網絡中爆炸梯度的溫和介紹
- 對時間反向傳播的溫和介紹
- 生成長短期記憶網絡的溫和介紹
- 專家對長短期記憶網絡的簡要介紹
- 在序列預測問題上充分利用LSTM
- 編輯器 - 解碼器循環神經網絡全局注意的溫和介紹
- 如何利用長短時記憶循環神經網絡處理很長的序列
- 如何在Python中對一個熱編碼序列數據
- 如何使用編碼器 - 解碼器LSTM來回顯隨機整數序列
- 具有注意力的編碼器 - 解碼器RNN體系結構的實現模式
- 學習使用編碼器解碼器LSTM循環神經網絡添加數字
- 如何學習長短時記憶循環神經網絡回聲隨機整數
- 具有Keras的長短期記憶循環神經網絡的迷你課程
- LSTM自動編碼器的溫和介紹
- 如何用Keras中的長短期記憶模型進行預測
- 用Python中的長短期內存網絡演示內存
- 基于循環神經網絡的序列預測模型的簡要介紹
- 深度學習的循環神經網絡算法之旅
- 如何重塑Keras中長短期存儲網絡的輸入數據
- 了解Keras中LSTM的返回序列和返回狀態之間的差異
- RNN展開的溫和介紹
- 5學習LSTM循環神經網絡的簡單序列預測問題的例子
- 使用序列進行預測
- 堆疊長短期內存網絡
- 什么是教師強制循環神經網絡?
- 如何在Python中使用TimeDistributed Layer for Long Short-Term Memory Networks
- 如何準備Keras中截斷反向傳播的序列預測
- 如何在使用LSTM進行訓練和預測時使用不同的批量大小
- Machine Learning Mastery 機器學習算法教程
- 機器學習算法之旅
- 用于機器學習的裝袋和隨機森林集合算法
- 從頭開始實施機器學習算法的好處
- 更好的樸素貝葉斯:從樸素貝葉斯算法中獲取最多的12個技巧
- 機器學習的提升和AdaBoost
- 選擇機器學習算法:Microsoft Azure的經驗教訓
- 機器學習的分類和回歸樹
- 什么是機器學習中的混淆矩陣
- 如何使用Python從頭開始創建算法測試工具
- 通過創建機器學習算法的目標列表來控制
- 從頭開始停止編碼機器學習算法
- 在實現機器學習算法時,不要從開源代碼開始
- 不要使用隨機猜測作為基線分類器
- 淺談機器學習中的概念漂移
- 溫和介紹機器學習中的偏差 - 方差權衡
- 機器學習的梯度下降
- 機器學習算法如何工作(他們學習輸入到輸出的映射)
- 如何建立機器學習算法的直覺
- 如何實現機器學習算法
- 如何研究機器學習算法行為
- 如何學習機器學習算法
- 如何研究機器學習算法
- 如何研究機器學習算法
- 如何在Python中從頭開始實現反向傳播算法
- 如何用Python從頭開始實現Bagging
- 如何用Python從頭開始實現基線機器學習算法
- 如何在Python中從頭開始實現決策樹算法
- 如何用Python從頭開始實現學習向量量化
- 如何利用Python從頭開始隨機梯度下降實現線性回歸
- 如何利用Python從頭開始隨機梯度下降實現Logistic回歸
- 如何用Python從頭開始實現機器學習算法表現指標
- 如何在Python中從頭開始實現感知器算法
- 如何在Python中從零開始實現隨機森林
- 如何在Python中從頭開始實現重采樣方法
- 如何用Python從頭開始實現簡單線性回歸
- 如何用Python從頭開始實現堆棧泛化(Stacking)
- K-Nearest Neighbors for Machine Learning
- 學習機器學習的向量量化
- 機器學習的線性判別分析
- 機器學習的線性回歸
- 使用梯度下降進行機器學習的線性回歸教程
- 如何在Python中從頭開始加載機器學習數據
- 機器學習的Logistic回歸
- 機器學習的Logistic回歸教程
- 機器學習算法迷你課程
- 如何在Python中從頭開始實現樸素貝葉斯
- 樸素貝葉斯機器學習
- 樸素貝葉斯機器學習教程
- 機器學習算法的過擬合和欠擬合
- 參數化和非參數機器學習算法
- 理解任何機器學習算法的6個問題
- 在機器學習中擁抱隨機性
- 如何使用Python從頭開始擴展機器學習數據
- 機器學習的簡單線性回歸教程
- 有監督和無監督的機器學習算法
- 用于機器學習的支持向量機
- 在沒有數學背景的情況下理解機器學習算法的5種技術
- 最好的機器學習算法
- 教程從頭開始在Python中實現k-Nearest Neighbors
- 通過從零開始實現它們來理解機器學習算法(以及繞過壞代碼的策略)
- 使用隨機森林:在121個數據集上測試179個分類器
- 為什么從零開始實現機器學習算法
- Machine Learning Mastery 機器學習入門教程
- 機器學習入門的四個步驟:初學者入門與實踐的自上而下策略
- 你應該培養的 5 個機器學習領域
- 一種選擇機器學習算法的數據驅動方法
- 機器學習中的分析與數值解
- 應用機器學習是一種精英政治
- 機器學習的基本概念
- 如何成為數據科學家
- 初學者如何在機器學習中弄錯
- 機器學習的最佳編程語言
- 構建機器學習組合
- 機器學習中分類與回歸的區別
- 評估自己作為數據科學家并利用結果建立驚人的數據科學團隊
- 探索 Kaggle 大師的方法論和心態:對 Diogo Ferreira 的采訪
- 擴展機器學習工具并展示掌握
- 通過尋找地標開始機器學習
- 溫和地介紹預測建模
- 通過提供結果在機器學習中獲得夢想的工作
- 如何開始機器學習:自學藍圖
- 開始并在機器學習方面取得進展
- 應用機器學習的 Hello World
- 初學者如何使用小型項目開始機器學習并在 Kaggle 上進行競爭
- 我如何開始機器學習? (簡短版)
- 我是如何開始機器學習的
- 如何在機器學習中取得更好的成績
- 如何從在銀行工作到擔任 Target 的高級數據科學家
- 如何學習任何機器學習工具
- 使用小型目標項目深入了解機器學習工具
- 獲得付費申請機器學習
- 映射機器學習工具的景觀
- 機器學習開發環境
- 機器學習金錢
- 程序員的機器學習
- 機器學習很有意思
- 機器學習是 Kaggle 比賽
- 機器學習現在很受歡迎
- 機器學習掌握方法
- 機器學習很重要
- 機器學習 Q& A:概念漂移,更好的結果和學習更快
- 缺乏自學機器學習的路線圖
- 機器學習很重要
- 快速了解任何機器學習工具(即使您是初學者)
- 機器學習工具
- 找到你的機器學習部落
- 機器學習在一年
- 通過競爭一致的大師 Kaggle
- 5 程序員在機器學習中開始犯錯誤
- 哲學畢業生到機器學習從業者(Brian Thomas 采訪)
- 機器學習入門的實用建議
- 實用機器學習問題
- 使用來自 UCI 機器學習庫的數據集練習機器學習
- 使用秘籍的任何機器學習工具快速啟動
- 程序員可以進入機器學習
- 程序員應該進入機器學習
- 項目焦點:Shashank Singh 的人臉識別
- 項目焦點:使用 Mahout 和 Konstantin Slisenko 進行堆棧交換群集
- 機器學習自學指南
- 4 個自學機器學習項目
- álvaroLemos 如何在數據科學團隊中獲得機器學習實習
- 如何思考機器學習
- 現實世界機器學習問題之旅
- 有關機器學習的有用知識
- 如果我沒有學位怎么辦?
- 如果我不是一個優秀的程序員怎么辦?
- 如果我不擅長數學怎么辦?
- 為什么機器學習算法會處理以前從未見過的數據?
- 是什么阻礙了你的機器學習目標?
- 什么是機器學習?
- 機器學習適合哪里?
- 為什么要進入機器學習?
- 研究對您來說很重要的機器學習問題
- 你這樣做是錯的。為什么機器學習不必如此困難
- Machine Learning Mastery Sklearn 教程
- Scikit-Learn 的溫和介紹:Python 機器學習庫
- 使用 Python 管道和 scikit-learn 自動化機器學習工作流程
- 如何以及何時使用帶有 scikit-learn 的校準分類模型
- 如何比較 Python 中的機器學習算法與 scikit-learn
- 用于機器學習開發人員的 Python 崩潰課程
- 用 scikit-learn 在 Python 中集成機器學習算法
- 使用重采樣評估 Python 中機器學習算法的表現
- 使用 Scikit-Learn 在 Python 中進行特征選擇
- Python 中機器學習的特征選擇
- 如何使用 scikit-learn 在 Python 中生成測試數據集
- scikit-learn 中的機器學習算法秘籍
- 如何使用 Python 處理丟失的數據
- 如何開始使用 Python 進行機器學習
- 如何使用 Scikit-Learn 在 Python 中加載數據
- Python 中概率評分方法的簡要介紹
- 如何用 Scikit-Learn 調整算法參數
- 如何在 Mac OS X 上安裝 Python 3 環境以進行機器學習和深度學習
- 使用 scikit-learn 進行機器學習簡介
- 從 shell 到一本帶有 Fernando Perez 單一工具的書的 IPython
- 如何使用 Python 3 為機器學習開發創建 Linux 虛擬機
- 如何在 Python 中加載機器學習數據
- 您在 Python 中的第一個機器學習項目循序漸進
- 如何使用 scikit-learn 進行預測
- 用于評估 Python 中機器學習算法的度量標準
- 使用 Pandas 為 Python 中的機器學習準備數據
- 如何使用 Scikit-Learn 為 Python 機器學習準備數據
- 項目焦點:使用 Artem Yankov 在 Python 中進行事件推薦
- 用于機器學習的 Python 生態系統
- Python 是應用機器學習的成長平臺
- Python 機器學習書籍
- Python 機器學習迷你課程
- 使用 Pandas 快速和骯臟的數據分析
- 使用 Scikit-Learn 重新調整 Python 中的機器學習數據
- 如何以及何時使用 ROC 曲線和精確調用曲線進行 Python 分類
- 使用 scikit-learn 在 Python 中保存和加載機器學習模型
- scikit-learn Cookbook 書評
- 如何使用 Anaconda 為機器學習和深度學習設置 Python 環境
- 使用 scikit-learn 在 Python 中進行 Spot-Check 分類機器學習算法
- 如何在 Python 中開發可重復使用的抽樣檢查算法框架
- 使用 scikit-learn 在 Python 中進行 Spot-Check 回歸機器學習算法
- 使用 Python 中的描述性統計來了解您的機器學習數據
- 使用 OpenCV,Python 和模板匹配來播放“哪里是 Waldo?”
- 使用 Pandas 在 Python 中可視化機器學習數據
- Machine Learning Mastery 統計學教程
- 淺談計算正態匯總統計量
- 非參數統計的溫和介紹
- Python中常態測試的溫和介紹
- 淺談Bootstrap方法
- 淺談機器學習的中心極限定理
- 淺談機器學習中的大數定律
- 機器學習的所有統計數據
- 如何計算Python中機器學習結果的Bootstrap置信區間
- 淺談機器學習的Chi-Squared測試
- 機器學習的置信區間
- 隨機化在機器學習中解決混雜變量的作用
- 機器學習中的受控實驗
- 機器學習統計學速成班
- 統計假設檢驗的關鍵值以及如何在Python中計算它們
- 如何在機器學習中談論數據(統計學和計算機科學術語)
- Python中數據可視化方法的簡要介紹
- Python中效果大小度量的溫和介紹
- 估計隨機機器學習算法的實驗重復次數
- 機器學習評估統計的溫和介紹
- 如何計算Python中的非參數秩相關性
- 如何在Python中計算數據的5位數摘要
- 如何在Python中從頭開始編寫學生t檢驗
- 如何在Python中生成隨機數
- 如何轉換數據以更好地擬合正態分布
- 如何使用相關來理解變量之間的關系
- 如何使用統計信息識別數據中的異常值
- 用于Python機器學習的隨機數生成器簡介
- k-fold交叉驗證的溫和介紹
- 如何計算McNemar的比較兩種機器學習量詞的測試
- Python中非參數統計顯著性測試簡介
- 如何在Python中使用參數統計顯著性測試
- 機器學習的預測間隔
- 應用統計學與機器學習的密切關系
- 如何使用置信區間報告分類器表現
- 統計數據分布的簡要介紹
- 15 Python中的統計假設檢驗(備忘單)
- 統計假設檢驗的溫和介紹
- 10如何在機器學習項目中使用統計方法的示例
- Python中統計功效和功耗分析的簡要介紹
- 統計抽樣和重新抽樣的簡要介紹
- 比較機器學習算法的統計顯著性檢驗
- 機器學習中統計容差區間的溫和介紹
- 機器學習統計書籍
- 評估機器學習模型的統計數據
- 機器學習統計(7天迷你課程)
- 用于機器學習的簡明英語統計
- 如何使用統計顯著性檢驗來解釋機器學習結果
- 什么是統計(為什么它在機器學習中很重要)?
- Machine Learning Mastery 時間序列入門教程
- 如何在 Python 中為時間序列預測創建 ARIMA 模型
- 用 Python 進行時間序列預測的自回歸模型
- 如何回溯機器學習模型的時間序列預測
- Python 中基于時間序列數據的基本特征工程
- R 的時間序列預測熱門書籍
- 10 挑戰機器學習時間序列預測問題
- 如何將時間序列轉換為 Python 中的監督學習問題
- 如何將時間序列數據分解為趨勢和季節性
- 如何用 ARCH 和 GARCH 模擬波動率進行時間序列預測
- 如何將時間序列數據集與 Python 區分開來
- Python 中時間序列預測的指數平滑的溫和介紹
- 用 Python 進行時間序列預測的特征選擇
- 淺談自相關和部分自相關
- 時間序列預測的 Box-Jenkins 方法簡介
- 用 Python 簡要介紹時間序列的時間序列預測
- 如何使用 Python 網格搜索 ARIMA 模型超參數
- 如何在 Python 中加載和探索時間序列數據
- 如何使用 Python 對 ARIMA 模型進行手動預測
- 如何用 Python 進行時間序列預測的預測
- 如何使用 Python 中的 ARIMA 進行樣本外預測
- 如何利用 Python 模擬殘差錯誤來糾正時間序列預測
- 使用 Python 進行數據準備,特征工程和時間序列預測的移動平均平滑
- 多步時間序列預測的 4 種策略
- 如何在 Python 中規范化和標準化時間序列數據
- 如何利用 Python 進行時間序列預測的基線預測
- 如何使用 Python 對時間序列預測數據進行功率變換
- 用于時間序列預測的 Python 環境
- 如何重構時間序列預測問題
- 如何使用 Python 重新采樣和插值您的時間序列數據
- 用 Python 編寫 SARIMA 時間序列預測
- 如何在 Python 中保存 ARIMA 時間序列預測模型
- 使用 Python 進行季節性持久性預測
- 基于 ARIMA 的 Python 歷史規模敏感性預測技巧分析
- 簡單的時間序列預測模型進行測試,這樣你就不會欺騙自己
- 標準多變量,多步驟和多站點時間序列預測問題
- 如何使用 Python 檢查時間序列數據是否是固定的
- 使用 Python 進行時間序列數據可視化
- 7 個機器學習的時間序列數據集
- 時間序列預測案例研究與 Python:波士頓每月武裝搶劫案
- Python 的時間序列預測案例研究:巴爾的摩的年度用水量
- 使用 Python 進行時間序列預測研究:法國香檳的月銷售額
- 使用 Python 的置信區間理解時間序列預測不確定性
- 11 Python 中的經典時間序列預測方法(備忘單)
- 使用 Python 進行時間序列預測表現測量
- 使用 Python 7 天迷你課程進行時間序列預測
- 時間序列預測作為監督學習
- 什么是時間序列預測?
- 如何使用 Python 識別和刪除時間序列數據的季節性
- 如何在 Python 中使用和刪除時間序列數據中的趨勢信息
- 如何在 Python 中調整 ARIMA 參數
- 如何用 Python 可視化時間序列殘差預測錯誤
- 白噪聲時間序列與 Python
- 如何通過時間序列預測項目
- Machine Learning Mastery XGBoost 教程
- 通過在 Python 中使用 XGBoost 提前停止來避免過度擬合
- 如何在 Python 中調優 XGBoost 的多線程支持
- 如何配置梯度提升算法
- 在 Python 中使用 XGBoost 進行梯度提升的數據準備
- 如何使用 scikit-learn 在 Python 中開發您的第一個 XGBoost 模型
- 如何在 Python 中使用 XGBoost 評估梯度提升模型
- 在 Python 中使用 XGBoost 的特征重要性和特征選擇
- 淺談機器學習的梯度提升算法
- 應用機器學習的 XGBoost 簡介
- 如何在 macOS 上為 Python 安裝 XGBoost
- 如何在 Python 中使用 XGBoost 保存梯度提升模型
- 從梯度提升開始,比較 165 個數據集上的 13 種算法
- 在 Python 中使用 XGBoost 和 scikit-learn 進行隨機梯度提升
- 如何使用 Amazon Web Services 在云中訓練 XGBoost 模型
- 在 Python 中使用 XGBoost 調整梯度提升的學習率
- 如何在 Python 中使用 XGBoost 調整決策樹的數量和大小
- 如何在 Python 中使用 XGBoost 可視化梯度提升決策樹
- 在 Python 中開始使用 XGBoost 的 7 步迷你課程