Getting Set Up
需要安装的程序:
- Anaconda 5.0.1 Python 3.6
https://www.anaconda.com/download/
-- Python 3.6 可以更好地处理文本数据
-- Anacond 收集了流行的libraries以及packages.
- XGboost
安装XGBoost:
conda install -c conda-forge xgboost
本文包含
- Logistic classifier
- precision, recal, F1
- XGBoost classifer
1) Logistic Regression
二元分类法
在二元分类问题中,我们试图预测一个二进制结果,并将0和1的标签分配给我们的数据。
比如:
- 病人有癌症吗?
- 球队会赢得下一场比赛吗?
- 顾客会购买我的产品吗?
- 我会得到贷款吗?
- 这篇文章是假的吗?
让我们从一个例子开始。我们将使用一些NFL数据。x轴是球队在一个赛季中触地得分的数目,y轴是他们输了还是赢了比赛,分别用0或1表示。
那么,如果我们得到一个分数,我们如何预测我们是赢还是输?请注意,我们将预测0到1之间的值。接近0意味着我们确信它在0班,接近1,这意味着我们确信它在1班,接近0.5意味着我们不知道。
如果我们对上面的NFL示例使用线性回归,我们肯定会比随机猜测做得更好,但是它不能准确地表示数据:
因此,一条线不是最好的建模数据的方法。所以我们需要找到更好的曲线。
The Logistic Function
首先,我们将从数据科学袋中拉出一个函数,并显示它工作得相当好。
第二,我们将理解我们是如何产生这个函数以及它是如何与二进制结果和几率相关的。但在此之前,让我们更好地理解这一点。
这个函数需要有0的损失分数和1的胜利分数。有意义的是,分数需要0,分数低于1,其他分数和以上分数都是。在中等范围内需要平稳地从0增加到1。
它需要看起来像这样:
具有上述形状的函数为:
这是逻辑函数,也称为乙状函数。注意,当t接近无穷大时,逻辑函数的值接近1,当t接近负无穷大时,逻辑函数的值接近0。我们用这个式子: t=β0+β1xt=β0+β1x, 这意味着我们将处理一个熟悉的线性函数。
这给了我们:
P(x)是我们的假设,它代表了一个得分x导致获胜的概率。
β0β0和β1β1是最适合我们数据的参数。
# inital imports
# pandats is like a more powerful version of excel, we're using it to read a .csv file and manipulate tables
import pandas as pd
# a very popular graph plotting library
import matplotlib.pyplot as plt
# makes matplotlib look a bit better
import seaborn
# this makes the plots display in the notebook (here) rather than open as a file
%matplotlib inline
# Load the dataset into pandas: data/grad.csv
df = pd.read_csv('data/grad.csv')
# view the first 5 rows
df.head()
# Use the pandas describe method to get some preliminary summary statistics on the data.
# In particular l