# 訓練測試拆分
> 原文: [https://pythonbasics.org/split-train-test/](https://pythonbasics.org/split-train-test/)
數據是無限的。 數據科學家每天都要處理!
有時我們有數據,我們有特征,我們想嘗試預測會發生什么。
為此,數據科學家將這些數據放入機器學習中以創建模型。
讓我們舉個例子:
1. 計算機必須確定照片中是否包含貓或狗。
2. 計算機具有訓練階段和測試階段以學習如何進行。
3. 數據科學家收集了數千張貓和狗的照片。
4. 該數據必須分為訓練集和測試測試。
然后是拆分進來的時候。
## 訓練測試拆分
### 拆分

知道我們無法對訓練的相同數據進行測試,因為結果會令人懷疑……我們如何知道訓練和測試使用的數據百分比?
容易,我們有兩個數據集。
* 一個具有獨立特征,稱為(`x`)。
* 一個具有因變量,稱為(`y`)。
為了拆分它,我們這樣做:
```
x_train – x_test / y_train – y_test
```
這是一個簡單的公式,對吧?
`x_train`和`y_train`成為機器學習的數據,能夠創建模型。
創建模型后,輸入`x_test`,輸出應等于`y_test`。
模型輸出與`y_test`測試的距離越近:模型越精確。
```py
>>> import numpy as np
>>> from sklearn.model_selection import train_test_split
>>> X, y = np.arange(10).reshape((5, 2)), range(5)
>>> X
array([[0, 1],
[2, 3],
[4, 5],
[6, 7],
[8, 9]])
>>> list(y)
[0, 1, 2, 3, 4]
```
然后拆分,讓 33% 作為測試集(剩下的用于訓練)。
```py
>>> X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)
```
您可以驗證自己有兩組:
```py
>>> X_train
array([[4, 5],
[0, 1],
[6, 7]])
>>> X_test
array([[2, 3],
[8, 9]])
>>> y_train
[2, 0, 3]
>>> y_test
[1, 4]
>>>
```
數據科學家可以將用于統計和機器學習的數據分為兩個或三個子集。
* 兩個子集將進行訓練和測試。
* 三個子集將是訓練,驗證和測試。
無論如何,科學家都希望進行預測以創建模型并測試數據。
當他們這樣做時,可能會發生兩件事:過擬合和欠擬合。
### 過擬合
過擬合比欠擬合最常見,但是為了避免影響模型的可預測性,不應進行過擬合。
那么,那意味著什么呢?
當模型過于復雜時,可能會發生過擬合。
過擬合意味著我們訓練的模型訓練得“太好”,并且與訓練數據集過于緊密。
但是,如果感覺太好,為什么會有問題呢? 問題在于,訓練數據的準確性將無法對未訓練或新數據進行準確性。
為避免這種情況,與觀察數相比,數據不能包含許多特征/變量。
### 欠擬合
那衣服不足呢?
當模型太簡單時,可能會導致欠擬合,這意味著模型不適合訓練數據。
為了避免這種情況,數據需要足夠的預測變量/獨立變量。
之前,我們提到過驗證。
### 驗證
交叉驗證是指科學家將數據分為(k)個子集,并在 k-1 上訓練那些子集之一。
最后一個子集是用于測試的子集。
一些庫最常用于訓練和測試。
* **Pandas**:用于將數據文件作為 Pandas 數據幀加載并進行分析。
* **Sklearn**:用于導入數據集模塊,加載樣本數據集并運行線性回歸。
* **Matplotlib**:使用`pyplot`繪制數據圖。
最后,如果需要拆分數據庫,請首先避免過擬合或欠擬合。
進行訓練和測試階段(并根據需要進行交叉驗證)。
使用更適合所需工作的庫。
機器學習可以為您提供幫助,但是您必須很好地使用它。
[下載示例和練習](https://gum.co/MnRYU)
- 介紹
- 學習 python 的 7 個理由
- 為什么 Python 很棒
- 學習 Python
- 入門
- 執行 Python 腳本
- 變量
- 字符串
- 字符串替換
- 字符串連接
- 字符串查找
- 分割
- 隨機數
- 鍵盤輸入
- 控制結構
- if語句
- for循環
- while循環
- 數據與操作
- 函數
- 列表
- 列表操作
- 排序列表
- range函數
- 字典
- 讀取文件
- 寫入文件
- 嵌套循環
- 切片
- 多個返回值
- 作用域
- 時間和日期
- try except
- 如何使用pip和 pypi
- 面向對象
- 類
- 構造函數
- 獲取器和設置器
- 模塊
- 繼承
- 靜態方法
- 可迭代對象
- Python 類方法
- 多重繼承
- 高級
- 虛擬環境
- 枚舉
- Pickle
- 正則表達式
- JSON 和 python
- python 讀取 json 文件
- 裝飾器
- 網絡服務器
- 音頻
- 用 Python 播放聲音
- python 文字轉語音
- 將 MP3 轉換為 WAV
- 轉錄音頻
- Tkinter
- Tkinter
- Tkinter 按鈕
- Tkinter 菜單
- Tkinter 標簽
- Tkinter 圖片
- Tkinter 畫布
- Tkinter 復選框
- Tkinter 輸入框
- Tkinter 文件對話框
- Tkinter 框架
- Tkinter 列表框
- Tkinter 消息框
- Tkinter 單選按鈕
- Tkinter 刻度
- 繪圖
- Matplotlib 條形圖
- Matplotlib 折線圖
- Seaborn 分布圖
- Seaborn 繪圖
- Seaborn 箱形圖
- Seaborn 熱力圖
- Seaborn 直線圖
- Seaborn 成對圖
- Seaborn 調色板
- Seaborn Pandas
- Seaborn 散點圖
- Plotly
- PyQt
- PyQt
- 安裝 PyQt
- PyQt Hello World
- PyQt 按鈕
- PyQt QMessageBox
- PyQt 網格
- QLineEdit
- PyQT QPixmap
- PyQt 組合框
- QCheckBox
- QSlider
- 進度條
- PyQt 表格
- QVBoxLayout
- PyQt 樣式
- 編譯 PyQt 到 EXE
- QDial
- QCheckBox
- PyQt 單選按鈕
- PyQt 分組框
- PyQt 工具提示
- PyQt 工具箱
- PyQt 工具欄
- PyQt 菜單欄
- PyQt 標簽小部件
- PyQt 自動補全
- PyQt 列表框
- PyQt 輸入對話框
- Qt Designer Python
- 機器學習
- 數據科學
- 如何從機器學習和 AI 認真地起步
- 為什么要使用 Python 進行機器學習?
- 機器學習庫
- 什么是機器學習?
- 區分機器學習,深度學習和 AI?
- 機器學習
- 機器學習算法比較
- 為什么要使用 Scikit-Learn?
- 如何在 Python 中加載機器學習數據
- 機器學習分類器
- 機器學習回歸
- Python 中的多項式回歸
- 決策樹
- k 最近鄰
- 訓練測試拆分
- 人臉檢測
- 如何為 scikit-learn 機器學習準備數據
- Selenium
- Selenium 瀏覽器
- Selenium Cookie
- Selenium 執行 JavaScript
- Selenium 按 ID 查找元素
- Selenium 無頭 Firefox
- Selenium Firefox
- Selenium 獲取 HTML
- Selenium 鍵盤
- Selenium 最大化
- Selenium 截圖
- Selenium 向下滾動
- Selenium 切換到窗口
- Selenium 等待頁面加載
- Flask 教程
- Flask 教程:Hello World
- Flask 教程:模板
- Flask 教程:路由