应用sklearn实现线性回归LTR
为了更直不雅地体验,应用Python的sklearn类库来实现回归是一个便捷的方法。如不雅想应用上文数据经由过程线性回归测验测验下简单的LTR练习集,可以把我们测验测验的相干度等级猜测值记为S,我们看到的旌旗灯号将猜测该得分并记为X。
我们将应用一些片子相干度数据测验测验点有趣的工作。这里有一个搜刮关键词“Rocky”的相干度等级数据集。召回我们膳绫擎的评判表,转换为一个练习集。一路来体验下真实的练习集(注释会赞助我们懂得具体过程)。我们将检查的三个排序旌旗灯号,包含标题标TF*IDF得分、简介的TF*IDF得分以及片子不雅众的评分。
- grade,titleScore,overviewScore,ratingScore,comment:# keywords@movietitle
- 4,10.65,8.41,7.40,# 1366 rocky@Rocky
- 3,0.00,6.75,7.00,# 12412 rocky@Creed
- 3,8.22,9.72,6.60,# 1246 rocky@Rocky Balboa
- 3,8.22,8.41,0.00,# 1374 rocky@Rocky IV
- 3,8.22,7.68,6.90,# 1367 rocky@Rocky II
- 3,8.22,7.15,0.00,# 1375 rocky@Rocky V
- 3,8.22,5.28,0.00,# 1371 rocky@Rocky III
- 2,0.00,0.00,7.60,# 154019 rocky@Belarmino
- 2,0.00,0.00,7.10,# 1368 rocky@First Blood
- 2,0.00,0.00,6.70,# 13258 rocky@Son of Rambow
- 2,0.00,0.00,0.00,# 70808 rocky@Klitschko
- 2,0.00,0.00,0.00,# 64807 rocky@Grudge Match
- 2,0.00,0.00,0.00,# 47059 rocky@Boxing Gym
- ...
所以接下来直接来到代码的部分!下面的代码年腋荷琐CSV文件攫取数据到一个numpy数组;该数组是二维的,第一维作为行,第二维作为列。鄙人面的注释中可以看到很新潮的数组切片是若何进行的:
- from sklearn.linear_model import LinearRegression
- from math import sin
- import numpy as np
- import csv
- rockyData = np.genfromtxt('rocky.csv', delimiter=',')[1:] # Remove the CSV header
- rockyGrades = rockyData[:,0] # Slice out column 0, where the grades are
- rockySignals = rockyData[:,1:-1] # Features in columns 1...all but last column (the comment)
不错!我们已预备好进行一个简单线性回归了。这里我们应用一个经典的断定办法:方程比未知数多!是以我们须要应用常最小二乘法来估算特点rockySignals和等级rockyGrades间的关系。很简单,这就是numpy线性回归所做的:
- butIRegress = LinearRegression()
- butIRegress.fit(rockySignals, rockyGrades)
这里给出了系数(即“权重”)用于我们的排序旌旗灯号,:
我们经由过程这些系数可以建立本身的排序函数。做这些只是为了描述目标,sk-learn的线性回归带有猜测办法,能评估作为输入的模型,然则构建我们本身的更有意思:
- butIRegress.coef_ #boost for title, boost for overview, boost for rating
- array([ 0.04999419, 0.22958357, 0.00573909])
- butIRegress.intercept_
- 0.97040804634516986
漂亮!相干度解决了!(真的吗?)我们可以应用这些来建立一个排序函数。我们已经进修到了分别应用什么样的权重到标题和简介属性。
截至今朝,我忽视了一部分事项,即我们须要考量若何评价模型和数据的匹配度。在本文的结尾,我们只是想看看一般情况下这些模型是若何工作。但不只是假设该模型异常合适练习集数据是个不错的设法主意,老是须要回退一些数据来测试的。接下来的博文会分别介绍这些话题。
推荐阅读
沙龙晃荡 | 去哪儿、陌陌、ThoughtWorks在主动化运维中的实践!10.28不见不散! 本文科普了机械进修方面的常识,简单介绍了机械进修可以做什么,以及若何做的。以下是译文。在以前的几个月>>>详细阅读
本文标题:机器学习排序LTR入门——线性模型
地址:http://www.17bianji.com/lsqh/38146.html
1/2 1