Python 加权调整的机器学习
我正试图找出如何实现一些机器学习库来帮助我找出每个参数的正确权重,以便做出一个好的决策 更详细地说: 上下文:尝试为html文件实现发布日期提取器。这是为新闻网站,所以我没有一个通用的日期格式,我可以使用。我在python中使用dateutil中的解析器,它做得相当好。最后,我列出了可能的发布日期(html文件中的所有日期) 根据一组参数,例如关闭标记、日期子字符串附近的单词等,我根据作为发布日期的可能性对列表进行排序。每个参数的权重都是经过某种程度的猜测 我想实现一个机器学习算法,在一个训练期(其中提供了实际发布日期)之后,它确定每个参数的权重 我一直在阅读python中不同机器学习库的文档(pyML、scikit learn、pybrain),但我没有发现任何有用的东西。我也读过,有一个确定蘑菇是否易读的例子 注意:我正在使用pythonPython 加权调整的机器学习,python,machine-learning,weighting,Python,Machine Learning,Weighting,我正试图找出如何实现一些机器学习库来帮助我找出每个参数的正确权重,以便做出一个好的决策 更详细地说: 上下文:尝试为html文件实现发布日期提取器。这是为新闻网站,所以我没有一个通用的日期格式,我可以使用。我在python中使用dateutil中的解析器,它做得相当好。最后,我列出了可能的发布日期(html文件中的所有日期) 根据一组参数,例如关闭标记、日期子字符串附近的单词等,我根据作为发布日期的可能性对列表进行排序。每个参数的权重都是经过某种程度的猜测 我想实现一个机器学习算法,在一个训练期
非常感谢您的帮助。考虑到您的问题描述、YRU数据的特点以及您的ML背景和个人偏好,我推荐您 Orange是一个成熟的、免费的、开源的项目,有大量的ML算法和优秀的文档和培训材料。大多数用户可能使用Orange提供的GUI,但该框架可以使用Python编写脚本 因此,使用这个框架,当然可以让您快速试验各种分类器,因为(i)它们都在一个地方;和(ii)每个都通过通用配置语法GUI访问。Orange框架中的所有ML技术都可以在“演示”模式下运行 Orange安装附带的一个或多个示例数据集。提供的文件 在橙色的安装是极好的。此外,该主页还包含指向多个站点的链接 教程可能涵盖了框架中包含的所有ML技术 考虑到您的问题,可以从决策树算法(ID3或ID3实现)开始。Dobbs博士杂志(在线)的最新版本包括一篇关于使用决策树的优秀文章;用例是web服务器数据(来自服务器访问日志) Orange有一个可从GUI(作为“小部件”)获得的。如果这太容易的话,用python编写一个代码只需要大约100行它是该语言的工作实现的源代码 出于几个原因,我建议从决策树开始
从您的问题来看,在将训练数据提供给ML分类器之前,您似乎要完成两项任务 I.识别合理的类别标签 你想要预测的是一个日期。除非您的解析要求异常严格(例如,解析为单个日期),否则我将构建分类模型(返回给定数据点的类标签),而不是回归模型(返回单个连续值)
假设您的响应变量是一个日期,一种简单的方法是将最早的日期设置为基线0,然后将所有其他日期表示为一个整数值,该整数值表示与该基线的距离。接下来,将所有日期离散为一小部分范围。一种非常简单的方法是计算响应变量的五个摘要描述性统计数据(最小值、第一个四分位数、平均值、第三个四分位数和最大值)。从这五个统计数据中,你可以得到四个明智选择的日期
# suppose these are publication dates
>>> pd0 = "04-09-2011"
>>> pd1 = "17-05-2010"
# convert them to python datetime instances, e.g.,
>>> pd0 = datetime.strptime(pd0, "%d-%m-%Y")
# gather them in a python list and then call sort on that list:
>>> pd_all = [pd0, pd1, pd2, pd3, ...]
>>> pd_all.sort()
# 'sort' will perform an in-place sort on the list of datetime objects,
# such that the eariest date is at index 0, etc.
# now the first item in that list is of course the earliest publication date
>>> pd_all[0]
datetime.datetime(2010, 5, 17, 0, 0)
# express all dates except the earliest one as the absolute differenece in days
# from that earliest date
>>> td0 = pd_all[1] - pd_all[0] # t0 is a timedelta object
>>> td0
datetime.timedelta(475)
# convert the time deltas to integers:
>>> fnx = lambda v : int(str(v).split()[0])
>>> time_deltas = [td0,....]
# d is jsut a python list of integers representing number of days from a common baseline date
>>> d = map(fnx, time_deltas)