Python-GraphLab应用
1. 安装方法
dato.org官网下载客户端安装即可,比较方便,如果使用代码安装比较费劲。
2.启动GraphLab
activate dato_env
jupyter notebook
3.基本用法
导入基本库:
import graphlab
导入数据(这里是CSV格式):
sf = graphlab.SFrame('==data==.csv')
输出sf内容
sf
输出sf的数据统计
sf.show()
默认的是在浏览器中打开新窗口,如果要在当前notebook界面输出结果,可以使用:
graphlab.canvas.set_target('ipynb')
默认的为:
graphlab.canvas.set_target(‘browser’)
sf
命令输出的是表格的前几行数据,使用sf.head()
可以达到同样的目的,同样,使用sf.tail()
可以显示表格的最后几行数据。
具体数据处理语句使用
显示表格中的某一项
sf['country]
计算某一项的平均值等
sf['age'].mean()
sf['age'].max()
sf['age'].min()
创建新列Column
sf['Full Name'] = sf['First Name'] + sf['Last Name']
年龄列全部加2
sf['age'] = sf['age'] + 2
对Country列的字符串进行修改
def tranform_country(country):
if country == 'USA':
return 'United States'
else:
return country
##每一行都会调用上面的tranform_country方法
sf['Country'] = sf['Country'].apply(transform_country)
图表操作
sales = graphlab.SFrame('house_data.csv')
train data 和 test data的随机划分
train_data, test_data = sales.random_split(0.8,seed=0)
其中random_split
是指随机分割函数,0.8代表train_data和test_data所占比例,seed=0代表随机数算法设定的种子。
使用train_data
和test_data
命令可以分别查看它们的数据内容。
创建Linear Regression模型
sqtf_model = graphlab.linear_regression.create(train_data,target='price',features=['sqtf_living'])
其中,target代表Y轴,features代表X轴
导入图表库
import matplotlib.pyplot as plt
作图
plt.plot(test_data['sqtf_living'],test_data['price'])
作散点图
plt.scatter(test_data['sqtf_living'],test_data['price'])
作预期结果直线
plt.plot(sf['size'], sf['price'], '.',sf['size'], model.predict(sf),'-')
其中predict是预测出来的值,使用-来表示,也就是最后结果为直线
如果要在当前notebook界面下显示则可以使用:
%matplotlib inline
来设置
含有多个曲线的作图:
其中’^’和’-‘代表每个点的形式是三角还是直线,’–’表示虚线,sqtf_model.predic(test_data)代表的是数据的预测,代码表示的是画出原始数据和预测数据并用不同的图线表示出来。
获得拟合的直线的参数
sqtf_mode.get('coefficients')
展示其中的某几个特征
my_features = ['bedrooms','bathrooms','sqtf_living']
sales[my_features].show()
完整的代码示例
%matplotlib inline
import graphlab
import matplotlib.pyplot as plt
加载文件
data = graphlab.SFrame('ex1data1.txt')
#分割训练样本和测试样本
train_data, test_data = data.random_split(.8, seed=0)
#训练线性模型
linear_model = graphlab.linear_regression.create(train_data, target = 'price', features = ['size'])
#输出图标
plt.plot(train_data['size'], train_data['price'],'.', train_data['size'], linear_model.predict(train_data),'-')
#输出误差
linear_model.evaluate(train_data)
linear_model.evaluate(test_data)
#输出获得的参数
linear_model.get('coefficients')
#对测试样本进行预测
linear_model.predict(test_data)
#将测试样本结果画成图表
plt.plot(test_data['size'], test_data['price'],'.',test_data['size'],linear_model.predict(test_data),'-')