机器学习与r语言数据来源

Python013

机器学习与r语言数据来源,第1张

起源

我们的存在离不开信息,我们依赖数据而存在,大脑就是一个黑箱,连接黑箱和外界的就是你的感官,在时间流里,各种数据被我们的感官提取,传入大脑。大脑可以对信息进行建模,理解信息,预测未来,通过肌肉控制器对外发出指令,改变外在的世界。

语言是这整个环节当中一个非常重要的因素,语言可以将数据在不同的大脑模型间传递,这些模型就组成了更为强大的网络,创造了高等文明。语言也是一种客观的记录工具。

我们人类的语言是对我们存在世界的一种映射,而计算机语言则很局限,仅为执行任务而生;我们的大脑能够对整个世界建模,能对将这世界的每一个物体抽象建模。

人类之所以强大,是因为它是作为一个整体存在的,任何个体都只会是这个网络中的一个节点。

我们一直存在于大数据之中,只是现在我们更容易的获取数据了。

如果我们理解了数据中存在的有规律的模式,我们就能做出有潜力的预测。

机器学习,发明计算机算法,把数据转化为智能行为。(核心循环的三者:现有数据;统计方法;计算能力)

数据挖掘,从大型数据库中产生新的洞察,侧重寻找有价值的信息;机器学习侧重于执行一个已知的任务。

(在商业上一个重要的应用就是根据客户的购买行为,预测其需求,从而为其提供个性化的服务和推销。)

1.2 学习理论

定义:如果机器能够获取经验并且能利用它们,在以后的类似经验中能够提高它的表现,这种行为就是机器的学习。

学习过程:

数据输入,观察(抽象并提取信息),记忆(将信息存储在大脑的某个文件里),回忆(打开大脑里的文件)

抽象化,将数据转换成更宽泛的表现形式

一般化,应用抽象数据来形成行动的基础

举例:学习&考试

过目不忘并不是一种本领,而是一种低级的作弊方式,你没有深刻理解知识,数据本身并不能为你做出决策;必须理解核心概念(建立大纲、概念图),明确信息之间的关系,以主题为中心(这就是知识抽象化)。 一般化,需要大量抽象数据,理解如何将已有知识应用到未知场景中(好的老师能做到这两点)。

1.2.1 抽象化和知识表达

原始数据是没有意义的,仅仅是一些01或符号而已,抽象化赋予数据以具体含义。

idea 和 reality,只是语言的抽象连接。

知识表达中,将原始数据概括在一个模型里,该模型就是数据间结构化的显式描述。(方程,图表,分类都是模型)

学习的任务和所分析数据的类型决定选择使用什么模型。

用一个特定的模型来拟合数据集的过程称为训练(还没达到学习,这还只是抽象化,学习还包括一般化)。

当模型被训练后,数据转换为一个汇总了原始信息的抽象形式。模型提供了数据之间的关系或联系。

1.2.2 一般化

抽象化过程中可能发现无数的内在关系,有多种方法可以对内在关系建模(集合),为了预测,必须选定模型。

定义:一般化描述了把抽象化的知识转换成可以用于行动的形式。是训练过程中对所有可用于数据抽象化的模型的搜索过程。

一般不会遍历每一种可能来确定模型,而是用启发式方法。

偏差,就是系统误差,是模型与真实值之间的差距。偏差是普遍存在的。

一般化的最后一步就是在存在偏差的情况下判断模型的成功性。

数据中必然存在噪音,模型不能拟合噪音而造成过度拟合,模型处理噪音数据的好坏是判断模型成功与否的重要方面。

是指sql之类的数据库吗,可以用RODBC包与数据库连接,将数据库中的表读入R中,接下来就可以按照常规的代码解决问题了,也可以安装sqldf包,这样就可以在R中用sql语句对数据操作。install.packages("RODBC")library(RODBC)

一、 安装RODBC库

1、进入R语言的GUI界面(RGUI.EXE),在菜单栏选择“程序包/安装程序包

2、在弹出的窗口里往下拉,选择RODBC如图,点击确定

3、在ODBC数据源管理器里将需要的数据库添加进去,这里笔者使用的是SQL Server2008,驱动程序选择Native Client10.0

3、在R语言窗口输入连接语句

>library(RODBC)

**这里是载入RODBC库

>channel<-odbcConnect("MyTest",uid="ripley",case="tolower")

**连接刚才添加进数据源的“MyTest”数据库

**ch <- odbcConnect("some dsn ", uid = "user ", pwd = "**** ")

**表示用户名为user,密码是****,如果没有设置,可以直接忽略

>data(USArrests)

**将“USArrests”表写进数据库里(这个表是R自带的)

>sqlSave(channel,USArrests,rownames = "state",addPK = TRUE)

**将数据流保存,这时候打开SQL Server就可以看到新建的USArrests表了

>rm(USArrests)

>sqlTables(channel)

**给出数据库中的表

>sqlFetch(channel,"USArrests",rownames = "state")

**输出USArrests表中的内容

>sqlQuery(channel,"select * from USArrests")

**调用SELECT查询语句并返回结果(如图)

>sqlDrop(channel,"USArrests")

**删除表

>odbcClose(channel)

**最后要记得关闭连接

当然,通过这个办法也可以读取Excel、Access表中的内容,具体方法类似,这里不再重复