在TensorFlow中使用KNN预测房价
最近在看《Python机器学习实践 测试驱动的开发方法》。里面的第一个例子就是使用sklearn去实现房价的预测。我想使用TensorFlow去完成该例题。但TensorFlow(目前版本1.8)中并未整合KNN算法,网上也有很多文章讲到TensorFlow KNN的实例,可大都是互相抄袭MINST的例子,而且实现的很不合理。于是我自己摸索着实现了一个,分享出来供同是入门者的朋友参考。本文所用数据集上传到了百度云,点击下载。
问题描述这个数据集中包含了好几十列数据,是西雅图一个县的房产数据,包含面积,位置,环境,价格等各个属性。本次简化了问题:仅根据 面积SqFtLot,位置(经度lat、维度long),去预测房价AppraisedValue。
导入依赖本次需要用到的包如下
import numpy as npimport tensorflow as tfimport pandas as pd
数据处理# 从csv里读取数据到dataframe里去,告诉pandas第一行是标题,另外只要限定的4列data = pd.read_csv(DATA_PATH, header=0)[[& ...
理解张量的Rank和Shape
入门TensorFlow的第一道拦路虎就是对Tensor的理解。 以下是我在理解张量的过程中的一些总结。
什么是张量这是bilibili搬运youtube的一个视频,很直观的解释了张量的含义。
张量是对标量,矢量,矩阵的推广。张量的表达看起来像是数组,其实每个值是在对应空间上的分量的大小。基向量和分量一起形成了张量的表达,他在物理学上的优点是,当基向量发生变化的时候(坐标系发生变化或者说是观察方向发生了变化),对应的分量也会发生变化,但整个张量却能保持不变。
下图是对张量从直观上给出的示意。一阶张量可以理解成一个向量,二阶张量可以理解成矩阵,三阶张量可以理解成立方体,四阶张量可以理解成立方体组成的一个向量,五阶张量可以理解成立方体组成的矩阵,依次类推。
什么是RankRank就是上文所说的阶。他是指这个张量拥有的基底向量的数量,也就是他的方向的数量。从上图中其实能看明白为什么是一阶、二阶、三阶。下图是一个示意。
在实际操作中,可以理解成[的深度。例如:
rank=1: [0,1,2]
rank=2: [[0,1],[2,3]]
rank= ...
理解特征工程
入门TensorFlow的第二道拦路虎就是特征工程,也就是各种示例代码中经常出现的tf.feature_column.xxx。为了理解特征工程,我查阅了一些资料和代码,下面是我的总结。
什么是特征工程在去训练一个模型的时候,总会用到原始数据。原始数据是每列有着含义的N行数据。所谓特征工程就是把原始数据的列转换成特征的过程。
什么是特征在机器学习和模式识别中,特征是在观测现象中的一种独立、可测量的属性。选择信息量大的、有差别性的、独立的特征是模式识别、分类和回归问题的关键一步 。
原始数据的列为什么不是特征特征是从原始数据的列转换而来。从关系上来说,可能是一对一,也可能是多对一(比如经度和维度两列合成一个特征),原始数据还可能存在冗余列,比如年龄和出生年月;从数据类型上来说,原始数据可以是任意类型,但特征一定是数字或者布尔;从数值上来说,原始数据随心所欲,特征可能就要格式化或者归一化;从代码层面上来说,特征应该是tensorflow框架指定的数据类型feature_column。所以原始数据的列和特征有着区别。
怎么做特征工程st=>start: Starte=>end: ...
基于webjars的前后端分离实现
遵循RESTful的前后端分离软件项目实践中,有两个不优雅的地方:1、前端和后端的版本管理和匹配不够简洁,2、工程部署时复杂多更高。而webjars恰好能解决这两个问题。以下是我的处理办法。
将前端打包成webjarsMaven POM配置前后端分离的项目,前端通常是纯静态网站(只包含js、css、html等resource)。为了打包成webjars,我们需要新建一个maven项目,一个典型的pom文件示例如下。重点是properties和resource里面的配置。distributionManagement是maven deploy的地址,并不影响打包。
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=&qu ...
什么是距离
在机器学习领域,距离是一个核心的概念,距离是用来衡量两个对象多近、多相似或者差别有多大的一个标尺。下面是近期学习过程中总结的对距离的理解。
闵科夫斯基距离我们知道$3$比$2$大,那$3$为什么比$2$大呢?实际上我们假设了原点,$3-2$是$(3,0)$到$(0,0)$的距离减去$(2,0)$到$(0,0)$的距离。$(3,0)$到$(0,0)$的距离是$3$是显而易见的。但是是怎么算出来的呢?或者考虑不那么特殊的点,比如$(3,4)$这个点,它到$(0,0)$的距离是多远呢?这是个勾股定理问题。
如上图所示,OA的距离是$\sqrt{(3-0)^2+(4-0)^2}=\sqrt{3^2+4^2}=5$
将上式再抽象一层,假设两点$P(x_1,x_2),Q(y_1,y_2)$,那么两点之间的距离为:
$\sqrt{(x_1-y_1)^2+(x_2-y_2)^2}$
这样计算出来的距离即称为欧几里得距离。欧几里得距离的一个更通用表达如下:
$d(x,y)=\sqrt{\sum_{i=0}^n(x_i-y_i)^2}$
可以看到,在欧几里得距 ...
怎样在XFCE下建立一个开始菜单项或者桌面图标
在如下路径下建立xxx.desktop文件:
针对个人为: ~/.local/share/applications/
针对全局为: /usr/share/applications/
例如, 建立一个eclipse的快捷方式可以如下操作:
vi ~/.local/share/applications/eclipse.desktop
然后在文件中输入:
[Desktop Entry]Version=1.0Type=ApplicationEncoding=UTF-8Exec=eclipseIcon=icon.xpmStartupNotify=falseCategories=X-XFCE;Development;OnlyShowIn=XFCE;Name=EclipseComment=Eclipse IDE
其中, Exec为运行文件的路径, Icon为对应的图标, Categories为存放的分类. 如果你将图标存放到桌面上~/desktop/,则快捷方式存放在桌面上, 不过存在图标无法缩小的问题。
JPA在sqlserver2008下缺少sys.sequences的解决办法
目前在一个使用Spring Boot 2.0.2框架的工程里,使用jpa配合sqlserver2008,启动时直接报错”找不到sys.sequeces”对象。
经过跟踪代码,发现jpa对于数据库的版本识别出了问题。
定位到问题后,查找解决办法。查阅jpa的配置参数spring.jpa.database-platform能用来指定数据库版本。
在application.properties文件中,配置
spring.jpa.database-platform=org.hibernate.dialect.SQLServer2008Dialect
问题解决!
spring boot下spring security结合token的使用小结
本文将详细介绍在spring boot环境中使用spring security实现token认证的方法和注意事项。
Maven依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency><!-- https://mvnrepository.com/artifact/io.jsonwebtoken/jjwt --> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt</artifactId> <version>0.9.0</version> ...
JPA @Query delete 问题
使用JPA去做删除操作,除了remove外很容易想到下面这种做法:
@Query("delete from Model t where t.id=:id")public void doDelete(int id);
但上面这个写法会delete失败,加上两个注解即可,如下:
@Modifying@Transactional@Query("delete from Model t where t.id=:id")public void doDelete(int id);
Fira Code 程序员专用字体
今天无意中发现一款字体,叫 Fira Code,无论是搭配Idea还是Vscode 都是这么好看,无论是写Java还是Python都是那么赏心悦目。
激动呀!网上一搜,原来这么多码农推荐过- -!这也证明Fira Code真的不错。
访问此网站 https://github.com/tonsky/FiraCode 下载字体安装。