说到价格预测,我们首先能想到的就是kaggle一个比赛,关于房价的预测,不过在房地产行业这么火热的时代,做一个中国版的房价预测也很有意思,但是博主想做的是一个对二手设备价格的预测,通过对二手设备的类型、年代、用过的时间、地理位置等各种特征,进行一个建模,来预测售价,不过这是个比较容易点的应用,未来对于能通过一张或者几张图片就预测二手设备的价格,我觉得这个是比较有挑战的。

下面对价格的预测主要通过线性回归模型、决策树(回归树)模型、xgboost、神经网络、支持向量回归等算法模型,用sk-learn包来构建。

1.线性回归

from sklearn.linear_model import LinearRegression 

2.决策树回归

from sklearn.tree import DecisionTreeRegressor

3. 支持向量回归

from sklearn.svm import SVR  
linear_svr = SVR(kernel='linear')  
linear_svr.fit(x_train, y_train.ravel())  
linear_svr_predict = linear_svr.predict(x_test)  

4. 梯度提升回归算法

    import numpy as np  
    from sklearn.ensemble import GradientBoostingRegressor  
    gbdt=GradientBoostingRegressor(  
      loss='ls'  
    , learning_rate=0.1  
    , n_estimators=100  
    , subsample=1  
    , min_samples_split=2  
    , min_samples_leaf=1  
    , max_depth=3  
    , init=None  
    , random_state=None  
    , max_features=None  
    , alpha=0.9  
    , verbose=0  
    , max_leaf_nodes=None  
    , warm_start=False  
    )  
    train_feat=np.genfromtxt("train_feat.txt",dtype=np.float32)  
    train_id=np.genfromtxt("train_id.txt",dtype=np.float32)  
    test_feat=np.genfromtxt("test_feat.txt",dtype=np.float32)  
    test_id=np.genfromtxt("test_id.txt",dtype=np.float32)  
    print train_feat.shape,rain_id.shape,est_feat.shape,est_id.shape  
    gbdt.fit(train_feat,train_id)  
    pred=gbdt.predict(test_feat)  
    total_err=0  
    for i in range(pred.shape[0]):  
        print pred[i],test_id[i]  
        err=(pred[i]-test_id[i])/test_id[i]  
        total_err+=err*err  
    print total_err/pred.shape[0]  

5. 随机森林回归

from sklearn.ensemble import RandomForestRegressor

data=[[0,0,0],[1,1,1],[2,2,2],[1,1,1],[2,2,2],[0,0,0]]
target=[0,1,2,1,2,0]
rf = RandomForestRegressor()
rf.fit(data, target)

print rf.predict([[1,1,1]])
print rf.predict([[1,1,1],[2,2,2]])
#[ 1.]
#[ 1.  1.9]

data2=[[0,0,0],[1,1,1],[2,2,2],[3,3,3],[4,4,4],[5,5,5]]
target2=[0,1,2,3,4,5]
rf2 = RandomForestRegressor()
rf2.fit(data2, target2)
print rf2.predict([[1,1,1]])
print rf2.predict([[1,1,1],[2,2,2],[4,4,4]])
#[ 0.7]
#[ 0.7  1.8  4. ]

6.xgboost的线性回归

import xgboost as xgb 
regr = xgb.XGBRegressor()

7. 神经网络

可以利用神经网络模型做预测,这个例子暂时还没有,后期再补吧。

总结:本文主要是对价格预测模型给出了几种快速构建的选择,基于上面模型,还可以做模型融合等操作。如果更深入了解一些相关内容,参考这篇文章:基于机器学习方法对销售预测的研究

Logo

脑启社区是一个专注类脑智能领域的开发者社区。欢迎加入社区,共建类脑智能生态。社区为开发者提供了丰富的开源类脑工具软件、类脑算法模型及数据集、类脑知识库、类脑技术培训课程以及类脑应用案例等资源。

更多推荐