odds= p/ (1-p) = probability of event occurrence / probability of not event occurrenceln(odds) = ln(p/(1-p))logit(p) = ln(p/(1-p)) = b0+b1X1+b2X2+b3X3....+bkXk在上面的式子里,p 是我们感兴趣的特征出现的概率 。它选用使观察样本值的可能性最大化的值作为参数,而不是通过计算误差平方和的最小值(就如一般的回归分析用到的一样) 。
现在你也许要问了,为什么我们要求出对数呢?简而言之,这种方法是复制一个阶梯函数的最佳方法之一 。我本可以更详细地讲述,但那就违背本篇指南的主旨了 。

文章插图
Python代码
#Import Libraryfrom sklearn.linear_model import LogisticRegression#Assumed you have, X (predictor) and Y (target) for training data set and x_test(predictor) of test_dataset# Create logistic regression objectmodel = LogisticRegression()# Train the model using the training sets and check scoremodel.fit(X, y)model.score(X, y)#Equation coefficient and Interceptprint('Coefficient: n', model.coef_)print('Intercept: n', model.intercept_)#Predict Outputpredicted= model.predict(x_test)更进一步:
你可以尝试更多的方法来改进这个模型:
- 加入交互项
- 精简模型特性
- 使用正则化方法
- 使用非线性模型
这是我最喜爱也是最频繁使用的算法之一 。这个监督式学习算法通常被用于分类问题 。令人惊奇的是,它同时适用于分类变量和连续因变量 。在这个算法中,我们将总体分成两个或更多的同类群 。这是根据最重要的属性或者自变量来分成尽可能不同的组别 。想要知道更多,可以阅读:简化决策树。

文章插图
来源: statsexchange
在上图中你可以看到,根据多种属性,人群被分成了不同的四个小组,来判断 “他们会不会去玩” 。为了把总体分成不同组别,需要用到许多技术,比如说 Gini、Information Gain、Chi-square、entropy 。
理解决策树工作机制的最好方式是玩Jezzball,一个微软的经典游戏(见下图) 。这个游戏的最终目的,是在一个可以移动墙壁的房间里,通过造墙来分割出没有小球的、尽量大的空间 。

文章插图
因此,每一次你用墙壁来分隔房间时,都是在尝试着在同一间房里创建两个不同的总体 。相似地,决策树也在把总体尽量分割到不同的组里去 。
更多信息请见: 决策树算法的简化
Python代码
#Import Library#Import other necessary libraries like pandas, numpy...from sklearn import tree#Assumed you have, X (predictor) and Y (target) for training data set and x_test(predictor) of test_dataset# Create tree object model = tree.DecisionTreeClassifier(criterion='gini') # for classification, here you can change the algorithm as gini or entropy (information gain) by default it is gini # model = tree.DecisionTreeRegressor() for regression# Train the model using the training sets and check scoremodel.fit(X, y)model.score(X, y)#Predict Outputpredicted= model.predict(x_test)4、支持向量机
这是一种分类方法 。在这个算法中,我们将每个数据在N维空间中用点标出(N是你所有的特征总数),每个特征的值是一个坐标的值 。
举个例子,如果我们只有身高和头发长度两个特征,我们会在二维空间中标出这两个变量,每个点有两个坐标(这些坐标叫做支持向量) 。

文章插图
现在,我们会找到将两组不同数据分开的一条直线 。两个分组中距离最近的两个点到这条线的距离同时最优化 。

文章插图
上面示例中的黑线将数据分类优化成两个小组,两组中距离最近的点(图中A、B点)到达黑线的距离满足最优条件 。这条直线就是我们的分割线 。接下来,测试数据落到直线的哪一边,我们就将它分到哪一类去 。
更多请见: 支持向量机的简化
将这个算法想作是在一个 N 维空间玩 JezzBall 。需要对游戏做一些小变动:
- 比起之前只能在水平方向或者竖直方向画直线,现在你可以在任意角度画线或平面 。
- 游戏的目的变成把不同颜色的球分割在不同的空间里 。
- 球的位置不会改变 。
#Import Libraryfrom sklearn import svm#Assumed you have, X (predictor) and Y (target) for training data set and x_test(predictor) of test_dataset# Create SVM classification object model = svm.svc() # there is various option associated with it, this is simple for classification. You can refer link, for mo# re detail.# Train the model using the training sets and check scoremodel.fit(X, y)model.score(X, y)#Predict Outputpredicted= model.predict(x_test)
推荐阅读
- 用Python构建深度学习应用
- 人工智能大众化的必经之路:机器学习
- 演讲稿:努力学习 勤奋学习演讲稿
- 告别三高 给你介绍10种茶喝
- 当机器人用上5G!万达-华为5G大赛将启动技术测验
- Java中变量命名规则
- Python 学习指南
- 学习24式太极拳 从练好站庄开始
- 学习太极拳好处多 调理肩周炎又强身
- 机器人替你看广告?秒针系统发布报告揭开异常流量的面具……
