<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # 概率回歸 > 原文:[https://www.textbook.ds100.org/ch/17/classification_prob.html](https://www.textbook.ds100.org/ch/17/classification_prob.html) ``` # HIDDEN # Clear previously defined variables %reset -f # Set directory for data loading to work properly import os os.chdir(os.path.expanduser('~/notebooks/17')) ``` ``` # HIDDEN import warnings # Ignore numpy dtype warnings. These warnings are caused by an interaction # between numpy and Cython and can be safely ignored. # Reference: https://stackoverflow.com/a/40846742 warnings.filterwarnings("ignore", message="numpy.dtype size changed") warnings.filterwarnings("ignore", message="numpy.ufunc size changed") import numpy as np import matplotlib.pyplot as plt import pandas as pd import seaborn as sns %matplotlib inline import ipywidgets as widgets from ipywidgets import interact, interactive, fixed, interact_manual import nbinteract as nbi sns.set() sns.set_context('talk') np.set_printoptions(threshold=20, precision=2, suppress=True) pd.options.display.max_rows = 7 pd.options.display.max_columns = 8 pd.set_option('precision', 2) # This option stops scientific notation for pandas # pd.set_option('display.float_format', '{:.2f}'.format) ``` ``` # HIDDEN def df_interact(df, nrows=7, ncols=7): ''' Outputs sliders that show rows and columns of df ''' def peek(row=0, col=0): return df.iloc[row:row + nrows, col:col + ncols] if len(df.columns) <= ncols: interact(peek, row=(0, len(df) - nrows, nrows), col=fixed(0)) else: interact(peek, row=(0, len(df) - nrows, nrows), col=(0, len(df.columns) - ncols)) print('({} rows, {} columns) total'.format(df.shape[0], df.shape[1])) ``` ``` # HIDDEN def jitter_df(df, x_col, y_col): x_jittered = df[x_col] + np.random.normal(scale=0, size=len(df)) y_jittered = df[y_col] + np.random.normal(scale=0.05, size=len(df)) return df.assign(**{x_col: x_jittered, y_col: y_jittered}) ``` 在籃球運動中,運動員通過一個籃筐射門得分。其中一位球員,勒布朗·詹姆斯,因其不可思議的得分能力被廣泛認為是有史以來最好的籃球運動員之一。 ![LeBron James (31944491583).jpg](https://img.kancloud.cn/07/a9/07a99f8b8f42abf2b8a7a5404481c935_1660x2585.jpg) 勒布朗在美國超級籃球聯盟國家籃球協會(NBA)打球。我們使用 NBA 統計網站([https://stats.nba.com/](https://stats.nba.com/))收集了勒布朗在 2017 年 NBA 季后賽中所有嘗試的數據集。 ``` lebron = pd.read_csv('lebron.csv') lebron ``` | | 游戲日期 | 分鐘 | 對手 | 動作類型 | 鏡頭類型 | 射擊距離 | 拍攝 | | --- | --- | --- | --- | --- | --- | --- | --- | | 零 | 20170415 年 | 10 個 | 因德 | 駕駛上籃得分 | 2pt 現場目標 | 零 | 0 | | --- | --- | --- | --- | --- | --- | --- | --- | | 1 個 | 20170415 | 11 個 | IND | Driving Layup Shot | 2PT Field Goal | 0 | 1 個 | | --- | --- | --- | --- | --- | --- | --- | --- | | 二 | 20170415 | 十四 | IND | 上籃得分 | 2PT Field Goal | 0 | 1 | | --- | --- | --- | --- | --- | --- | --- | --- | | …… | …… | ... | ... | ... | ... | ... | ... | | --- | --- | --- | --- | --- | --- | --- | --- | | 三百八十一 | 20170612 年 | 46 歲 | GSW | Driving Layup Shot | 2PT Field Goal | 1 | 1 | | --- | --- | --- | --- | --- | --- | --- | --- | | 382 個 | 20170612 | 47 歲 | GSW | 后仰跳投 | 2PT Field Goal | 14 | 0 | | --- | --- | --- | --- | --- | --- | --- | --- | | 三百八十三 | 20170612 | 48 歲 | GSW | Driving Layup Shot | 2PT Field Goal | 二 | 1 | | --- | --- | --- | --- | --- | --- | --- | --- | 384 行×7 列 此數據集的每一行都包含 Lebron 嘗試拍攝的照片的以下屬性: * `game_date`:比賽日期。 * `minute`:嘗試射門的分鐘數(每場 NBA 比賽 48 分鐘)。 * `opponent`:勒布朗對手的球隊縮寫。 * 【HTG0】:鏡頭前的動作類型。 * `shot_type'`:放炮類型(2 分或 3 分)。 * `shot_distance`:勒布朗嘗試射門時與籃筐的距離(英尺)。 * `shot_made`:`0`如果沒打中,如果打中,則`1`。 我們想用這個數據集來預測勒布朗是否會在未來出擊。這是一個 _ 分類問題 _;我們預測一個類別,而不是像在回歸中那樣的連續數。 我們可以通過預測一個鏡頭將進入的 _ 概率 _,將這個分類問題重新定義為一種回歸問題。例如,我們預計當勒布朗離籃筐越遠時,他投籃的概率就越低。 我們繪制了下面的射門嘗試圖,顯示了 X 軸上與籃筐的距離以及他是否在 Y 軸上射門。稍微抖動 Y 軸上的點可以減少過度繪制。 ``` # HIDDEN np.random.seed(42) sns.lmplot(x='shot_distance', y='shot_made', data=jitter_df(lebron, 'shot_distance', 'shot_made'), fit_reg=False, scatter_kws={'alpha': 0.3}) plt.title('LeBron Shot Make vs. Shot Distance'); ``` ![](https://img.kancloud.cn/04/11/0411eee127ee205fb6baf4a0840a37c8_352x370.jpg) 我們可以看到,當勒布朗離籃筐只有 5 英尺時,他往往投得最多。一個簡單的最小二乘線性回歸模型適合這個數據,產生以下預測: ``` # HIDDEN np.random.seed(42) sns.lmplot(x='shot_distance', y='shot_made', data=jitter_df(lebron, 'shot_distance', 'shot_made'), ci=None, scatter_kws={'alpha': 0.4}) plt.title('Simple Linear Regression'); ``` ![](https://img.kancloud.cn/b0/e6/b0e60200a6ca8eae30bef3c95c437d74_352x370.jpg) 線性回歸預測連續值。但是,要執行分類,我們需要將該值轉換為一個類別:放炮或未放炮。我們可以通過設置一個截止值或**分類閾值**來實現這一點。如果回歸預測的值大于 0.5,我們預測放炮會發生。否則,我們就預測這次射擊會失敗。 我們在下面畫一條綠色虛線。根據這個截止點,我們的模型預測,如果勒布朗在籃筐 15 英尺以內,他會投籃。 ``` # HIDDEN np.random.seed(42) sns.lmplot(x='shot_distance', y='shot_made', data=jitter_df(lebron, 'shot_distance', 'shot_made'), ci=None, scatter_kws={'alpha': 0.4}) plt.axhline(y=0.5, linestyle='--', c='g') plt.title('Cutoff for Classification'); ``` ![](https://img.kancloud.cn/39/ca/39caf2374e7c2f7efab2f5ad915d4cf1_340x357.jpg) 在上面的步驟中,我們嘗試執行回歸來預測一次放炮的可能性。如果我們的回歸產生了一個概率,那么設定 0.5 的臨界值意味著我們預測當我們的模型認為一個鏡頭進入的可能性比丟失的鏡頭更大時,一個鏡頭會進入。我們將在本章后面重新討論分類閾值的主題。 ## 概率線性回歸問題 不幸的是,我們的線性模型的預測不能解釋為概率。有效概率必須介于 0 和 1 之間,但我們的線性模型違反了這一條件。例如,當勒布朗距離籃筐 100 英尺時,他投籃的概率應該接近于零。然而,在這種情況下,我們的模型將預測負值。 如果我們改變我們的回歸模型,使它的預測可以被解釋為概率,我們就不會對使用它的預測進行分類感到不安。我們用一個新的預測函數和一個新的損失函數來實現這一點。生成的模型稱為**邏輯模型**。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看