背着锄头的互联网农民

0%

从计算机的发展来看,程序员越来越不用关注底层硬件的知识,开发变的越来越简单。归根结底,是因为虚拟化做的越来越好。文件系统将硬盘虚拟化,我们通过访问文件系统就操作了磁盘。进程和线程将CPU虚拟化,任何计算任务被加载到进程中来使用计算资源。Socket将网络访问虚拟化,简单的socket命令就可以方便的操纵网络。整体上来看,操作系统将计算机虚拟化,我们通过访问操作系统就可以控制计算机。

在分布式和云环境下,虚拟化也无处不在。Hadoop是对计算能力的虚拟化,通过提供map-reduce方式能方便的利用集群的CPU资源。云计算中IAAS、PAAS、SAAS也是将一些公共能力虚拟化,使得我们能够更方便、更灵活的使用云上的硬件资源。

阅读全文 »

本文继续根据Kaggle的Bag of Words Meets Bags of Popcorn问题探讨NLP的入门技术,前一篇文章介绍了使用CountVectorizer和TfidfVectorizer来对评论进行编码,本文将尝试使用Word2Vec的方法来对评论进行编码。

Word2Vec预处理

Word2Vec模型的训练语料需要是句子,所以我们首先需要将评论内容分离成一个个句子,这里使用nltk.tokenizer来分割句子。另外对句子仍然需要做去除HTML标签、去除特殊字符、去除停用词等。

阅读全文 »

Kaggle的该题目是NLP入门的经典案列,本文也是出于这样的目的来学习NLP常用技术,主要参考Overview

数据预处理

训练数据中包含了电影的评论内容和情感标签,评论内容是英文的,里面有可能包含各种特殊字符,也有可能是网页内容。测试数据只包含了评论内容,要求预测该评论对应的情感标签。评论内容是自然语言,需要先对评论做预处理,包括去除Html标签、去除特殊字符、分词、去除停用词等。

阅读全文 »

本文记录了Kaggle上Predict Future Sales问题的探索过程。

基础特征

数据主要有三个特征:shop_id, item_id, item_cnt_day。因为题目要求预测月份的销量情况,需要将训练数据中的按天销量改为按月销量,这里可以使用group_by或者pivot_table函数进行聚合。

1
2
3
4
5
6
7
8
9
10
11
12
train_data = pd.read_csv('./data/sales_train.csv')
#删除异常数据
train_data = train_data.drop(train_data[train_data.item_price < 0].index | train_data[train_data.item_price >= 100000].index)
train_data = train_data.drop(train_data[train_data.item_cnt_day < 0].index | train_data[train_data.item_cnt_day >= 1000].index)

train_data1 = pd.pivot_table(train_data, index=['shop_id','item_id','date_block_num'], values=['item_cnt_day'], aggfunc=[np.sum],fill_value=0).reset_index();
train_data1.columns = train_data1.columns.droplevel().map(str)
train_data1 = train_data1.reset_index(drop=True).rename_axis(None, axis=1)
train_data1.columns.values[0]="shop_id";
train_data1.columns.values[1]="item_id";
train_data1.columns.values[2]="month_id";
train_data1.columns.values[3]="item_cnt_month";

阅读全文 »

本文针对Kaggle中的房价预测题目,做一些初步探索。

特征相关性

首先使用DataFrame的corr函数输出SalePrice和其他特征的相关性,默认是皮尔森相关系数。因为有些特征是字符串格式,使用corr计算不出来,需要将其转换为数值特征后才行。这里先不考虑非数值特征,根据和SalePrice的相关性,选取出来的特征有:OverallQual,GarageCars,GarageArea,GrLivArea,TotalBsmtSF,1stFlrSF, YearBuilt,YearRemodAdd,FullBath,TotRmsAbvGrd,基本上是>0.5或者<-0.5的所有特征。

1
2
train_data = pd.read_csv('./data/train.csv')
corrmat = train_data.corr()

阅读全文 »

上一篇文章中我们初步使用xgboost模型预测存活,达到了75.1%的准确率。本文中我们将尝试一些优化工作,将预测准确率提升到80.4%。

参数调优

简单使用max_depth=4, learning_rate=0.1, n_estimates=200,准确率可以提升到76.5%。另外可以使用GridSearch的方法迭代测试每个超参数的最优值。

1
model = xgb.XGBClassifier(max_depth=4, sub_sample=0.7, colsample_btree=0.1, learning_rate=0.1, n_estimators=200);

增加familysize特征:提升1%的准确度
1
combined_data["fimalysize"] = combined_data["SibSp"] + combined_data["Parch"] + 1
阅读全文 »

本文针对Kaggle上面的Titanic问题进行了入门学习,搭建了一个简单的xgboost基础模型,达到了75%的精度。

预处理

Titanic的数据中共有12列属性,包括passengerId:乘客ID,Survived:存活情况,Pclass:船票级别,Name:乘客姓名, Sex:性别, Age:年龄, SibSp:船上的兄弟姐妹以及配偶的人数, Parch:船上的父母以及子女的人数, Ticket:船票编号, Fare:工资, Cabin:所在船舱, Embarked:登船的港口。xgboost的输入需要是数值型数据,所以这里需要将非数值类型转换为数值类型,另外xgboost其实可以处理缺失数据,本不必要对缺失数据做处理。每个属性的预处理代码如下:

阅读全文 »

在前一段的工作中遇到了JVM STW的问题,当时使用strace命令来查看JVM系统调用,本文将之前的操作步骤记录下来。

确定Java进程ID
1
ps -aux | grep "java"

结果如下,黄框内的就是进程的PID

阅读全文 »

IP定位是一种非常广泛的定位手段。虽然现在GPS定位和Wifi、基站定位技术已经很成熟了,但是在获取不到上述信息的情况下仍然需要依赖IP定位,除了这个IP定位有其本身独特的优点:定位时间短、耗电量低。IP定位的精度一般比较低,通常是城市范围,但是可以通过一些手段使得IP定位的精度在1km以内,我们称之为精确IP定位。

普通的IP定位在互联网上有很多公共的服务API,各个大公司也都有自己的IP库,比如百度有自己的哥伦布IP库,精度都在城市级别。那么我们怎么做到精确IP定位呢?

阅读全文 »