项目介绍

在房地产大热的时代,很多人倾尽一生的财富来获取一套房子,很多时候客户会根据地理位置去选取某一小区来购置房产,那么在特定的地理位置上,什么样的房型是最热门的,什么样的房子才是具有性价比的,开发商该怎么去设计户型以及改变户型比例才能获取最好的销量以及最丰厚的利润,本次项目通过爬取知名网站房天下的数据,涵盖房子的单价、朝向、面积、户型等信息。然后使用各种回归算法(随机森林、线性回归、lasso回归、岭回归、梯度提升树)来建立房价预测模型。

一、数据获取

数据的获取方式主要是使用python里的request库进行网页的爬取,然后使用beautifulsoup对内容进行解析,使用的目标网站是房天下广州市海珠区的部分(https://gz.esf.fang.com/house-a074/),该网站的房子信息包涵户型、建筑面积、单价、朝向、楼层情况和装修情况。注意房天下网站有反爬措施,可以通过设置休眠时间来避开,以及使用库去获取网页会重定向到另一个网页,通过解析网页才可以获得正确的目标地址。

import pandas as pd
import time
import requests as req
from bs4 import BeautifulSoup
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36',
}
def get_true_url(old_url):'''获得正确的url'''# print(old_url)r = req.get(url=old_url, headers=headers)if r'<title>跳转...</title>' in r.text:soup = BeautifulSoup(r.text, 'lxml')new_url = soup.find(name='a', attrs={'class': 'btn-redir'}).attrs['href']return new_urlreturn old_url
def getHouseInfo1(url):info = {}soup = BeautifulSoup(req.get(get_true_url(url)).text,"html.parser")res = soup.select(".tab-cont-right .trl-item1")#获取户型,建筑面积,单价,朝向,楼层,装修情况for re in res:tmp = re.text.strip().split('\n')name = tmp[-1].strip()if("朝向" in name):name = name.strip("进门")if("楼层" in name):name = name[0:2]if("地上层数" in name):name = "楼层"if("装修程度" in name):name = "装修"info[name] = tmp[0].strip()#获取小区名称,及总价xiaoqu = soup.select(".rcont .blue")[0].textinfo["小区名字"] = xiaoquzongjia = soup.select(".tab-cont-right .trl-item")info["总价"] = zongjia[0].textreturn info
#将爬取一页数据的代码放到方法中
domain = "https://gz.esf.fang.com"
city = "/house-a074/"
def pageFun1(i):page_url = domain + city +"i3"+ iprint(page_url)res = req.get(get_true_url(page_url))soup = BeautifulSoup(res.text,"html.parser")houses = soup.select(".shop_list dl")page_info_list = []#遍历返回的房屋信息for house in houses:#加try except异常处理try:info = getHouseInfo1(get_true_url(domain+house.select(".clearfix a")[0]['href']))page_info_list.append(info)#睡眠0.5秒钟time.sleep(1)except Exception as e:print("---------->",e)df = pd.DataFrame(page_info_list)return df

查看数据

df.head()#数据前五行

df.shape#获得数据形状

df.to_csv('house_data.csv',encoding='ANSI')#将数据导出成csv文件

二、数据预处理

数据预处理主要市观察是否有缺失值与异常值,对乱序的索引进行整理,以及对数据进行清理,包括转换类型,分解变量,从而能进入模型。

1、缺失值异常值处理

df.info()#首先查看数据大致信息

df.isnull().sum()#观察缺失值


可以了解到数据是没有缺失值的

df.index=range(len(df))#整理索引

df['户型'].value_counts()#查看户型信息

df=df[df['户型']!='暂无']#将户型暂无的样本删除,达到处理缺失值的效果

small_list=[]#定义一个空列表来存放数量较少的户型
features_counts=df['户型'].value_counts()#各户型类别数量
l = len(features_counts.values)
for i in range(l):#循环获取数量较少的户型if features_counts[i]<10:small_list.append(features_counts.index[i])
for i in small_list:#循环删除df=df[df['户型']!=i]

df['户型'].value_counts()

df['朝向'].value_counts()#查看朝向信息
df['装修'].value_counts()#查看装修信息
df['楼层'].value_counts()#查看楼层信息

2、清洗变量

df['建筑面积']=df['建筑面积'].map(lambda x: x.replace('平米','')).astype(float)
df['建筑面积']

df['单价']=df['单价'].map(lambda x: x.replace('元/平米','')).astype(float)#将单价的元/平米删除,并转换为浮点数字类型
df['单价']

df=pd.get_dummies(df, columns=['朝向','楼层','装修','户型'])#将多分类变量分解成二分类
df.shape


col=['小区名字','总价','朝向_东西','装修_毛坯','楼层_低层','户型_1室0厅1卫']#将多余的以及会引起多重共线性的的特征提取出来
for i in col:del df[i]
df.shape

三、EDA

探索性分析主要利用箱线图观察连续性变量的分布情况以及通过散点图来观察相关性,如果发现变量中存在异常值就进行处理。

df.describe()

df['建筑面积'].plot.box(title='area')#画箱线图看分布情况

df['单价'].plot.box('price')

可以看到缺失值主要是分布在建筑面积300以上,而300以上的房子一般来说并不是民用住房,没有研究意义,所以选择删除。
df['建筑面积'].plot.box(title='area')#画箱线图看分布情况
df['单价'].plot.box('price')
df=df[df['建筑面积']<=300]#删除面积大于三百的样本
area=df['建筑面积']
price=df['单价']
plt.figure(figsize=(20,10))
plt.scatter(area,price)#绘制面积与单价之间的散点图


area.corr(price)#计算相关系数

y=df['单价']#提取目标变量
X=df.drop(['单价'],axis=1)#特征
X_train,X_test,y_train,y_test=train_test_split(X,y)#将数据划分为训练集与测试集

四、建立模型

基于数据特征与结果,将进行多元回归模型的建立,使用了普通线性回归算法和能够对特征进行L2正则化的lasso线性回归算法,最后使用树型回归以及几个集成算法来构建模型。

#线性回归
lr=LinearRegression(normalize=True)
lr.fit(X_train,y_train)
lr.score(X_train,y_train)#训练集R方
lr.score(X_test,y_test)#测试集

la=Lasso(max_iter=10000000)
la.fit(X_train,y_train)
la.score(X_train,y_train)
la.score(X_test,y_test)

la=Lasso(max_iter=10000000,alpha=50)#调参加强L2正则化
la.fit(X_train,y_train)
la.score(X_train,y_train)
la.score(X_test,y_test)

coef_la = pd.Series(la.coef_, X.columns).sort_values(ascending=False)#回归系数
coef_la.plot(kind='barh',grid=True)#可视化

#决策树
from sklearn.tree import DecisionTreeRegressor
dt=DecisionTreeRegressor()
dt.score(X_train,y_train)
dt.score(X_test,y_test)

from sklearn.model_selection import GridSearchCV
param_grid={'max_depth':[19,20,21,22],'max_features':[20,21,22,23]}
grid=GridSearchCV(DecisionTreeRegressor(),param_grid,cv=5)
grid.fit(X_train,y_train)
grid.best_params_
grid.best_score_

dt=DecisionTreeRegressor(**grid.best_params_)
dt.fit(X_train,y_train)
dt.score(X_train,y_train)
dt.score(X_test,y_test)

#随机森林
rf=RandomForestRegressor()
cross_val_score(rf,X,y).mean()
param_grid={'max_depth':[19,20,21,22],'max_features':[20,21,22,23]}
grid=GridSearchCV(RandomForestRegressor(),param_grid,cv=5)
grid.fit(X,y)
grid.best_params_
grid.best_score_

rf=RandomForestRegressor(**grid.best_params_)
rf.fit(X_train,y_train)
rf.score(X_train,y_train)
rf.score(X_test,y_test)

coef_rf = pd.Series(rf.feature_importances_, X.columns).sort_values(ascending=False)
coef_rf

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
plt.figure(figsize=(20,10))
coef_rf.plot(kind='barh')

#梯度提升树 合并多个决策树来构建更强大的模型
from sklearn.ensemble import GradientBoostingRegressor
gbrt=GradientBoostingRegressor(n_estimators=2000)
param_grid={'learning_rate':[0.1,0.2,0.3,0.4]}
grid=GridSearchCV(gbrt,param_grid,cv=5)
grid.fit(X,y)
grid.best_params_
grid.best_score_

gbrt=GradientBoostingRegressor(n_estimators=2000,learning_rate=0.1)
gbrt.score(X_train,y_train)
gbrt.score(X_test,y_test)

coef_gbrt = pd.Series(gbrt.feature_importances_, X.columns).sort_values(ascending=False)
coef_gbrt.plot(kind='barh')

#AdaboostingRegression 通过改变样本权重来使得分类错误的样本获得更加的关注
from sklearn.ensemble import AdaBoostRegressor
ada=AdaBoostRegressor(base_estimator=DecisionTreeRegressor(),n_estimators=100)
ada.fit(X_train,y_train)
ada.score(X_train,y_train)
ada.score(X_test,y_test)

coef_ada = pd.Series(ada.feature_importances_, X.columns).sort_values(ascending=False)
coef_ada.plot(kind='barh')

五、模型评估

通过建立的六种模型,发现房价的数据如果单纯使用线性回归来拟合模型而得到的R-square分数并不理想,最高只能达到0.6,而树型回归效果较好,决策树回归模型精度比线性回归模型提升了10%,能够达到不错的效果,而在决策树基础上的集成算法,如随机森林,梯度提升树以及adaboosting算法,通过多棵树的集成,以及错误率的降低,最终呈现出的效果比之前使用的模型都有了一个很大的提升,这三种集成算法的拟合效果都相差不大,但也均存在过拟合的现象,训练集的R方达到了96%到97%之间,可能需要调整样本的分布来获得更好的效果。

六、模型应用

模型应用使用建立的随机森林模型来对几个具有一定特征的样本来进行房价的预测。

#模型应用
test=X_test[1:5]
pred=rf.predict(test)
test['真实单价']=y_test[1:5]
test['预测单价']=pred
test.T
#转置易于观察

七、项目结论

通过分析房天下两千余条数据,可以得出以下有用信息:

1、 观察了数据的户型、朝向、装修情况、楼层等类别数量情况,发现较为热门的户型为 三室二厅二卫和四室二厅二卫,朝向为南或者南北,装修情况还是以精装修为主。

2、 豪华装修的平均单价较高

sum(X['装修_豪华装修']*y)/len(X[X['装修_豪华装修']==1])
sum(X['装修_精装修']*y)/len(X[X['装修_精装修']==1])

3、 分析发现房子建筑面积也会影响单价,且面积越大,房子的单价越大,相关系数达到了0.7因此具有性价比的房子可能在面积中等左右的房子。

4、 总的来说四室二厅二卫的单价会较高,从lasso回归系数可以得出。

5、 高楼层的房子单价会比中楼层的房子单价贵

sum(X['楼层_高层']*y)/len(X[X['楼层_高层']==1])
sum(X['楼层_中层']*y)/len(X[X['楼层_中层']==1])

八、项目心得

通过分析房价数据,以及拟合了多个回归模型,挖掘出了影响房价的信息,以及能够利用拟合的模型进行房价的预测,这对于想要购置房产的人能够起到一个参考的作用,可以得到拥有具体特征的房子单价的大致水平,从而能够进行衡量相应的价格,对于房产商也可以根据得到的信息来设计房子的户型,调整价格,从而在相比之下使房价更具竞争力,以及减少冷门户型的开发投入,减少相应成本。通过拟合的线性模型以及集成回归模型可以知道,对于特征数较多的模型,线性回归的表现较差,不利于构建复杂的模型,而树型回归以及基于决策树的几个集成算法能够构建较为复杂的模型,从而能够提高模型的精度,如随机森林与梯度提升树比线性回归的R方高出了20%以上的拟合效果,但集成算法的缺点也很显然易见,它存在着过拟合,而解释性也相对于线性回归弱很多,可以说是几乎没有,唯一可以可视化的是在构建决策树时模型对于特征的选择权重,还是能够得出对于因变量影响较为大的特征,但却无法得到是正的影响还是负的影响。本次项目也存在着几个问题,通过爬虫获取的房价数据出现了样本不均匀的情况,其中朝向南的房子几乎占据了样本的一半,因此线性回归的效果并不好,也由于向南的样本的跨度较大,对于现实中朝向南或者南北的房子相对于其他朝向的房子单价较贵的事实并不明显,因此由于现实中向南的房子的数量确实占据很大的一部分,因此使用爬虫得到的数据也如此,而由于爬虫爬取数据的速度并不理想,速度非常的慢,如果通过有选择性的爬取房天下的数据也并不现实,所以这也是项目的缺点之一,如果需要改进样本可能需要使用重采样的方法或者提高笔记本速度,同时也获得了可以将样本数据朝向的特征仅分解为朝南和非朝南的两类,可以达到样本均衡的效果的建议,再有项目的特征并不是很全面,房价的影响因素还有很多,但由于编写爬虫的局限性使得这些特征较难获取,将在以后的学习中继续完善本项目。总的来说通过本次项目能够让我获得了关于房子单价的信息,并能建立模型根据一定的特征进行房价的预测,以及学会了如何优化模型,对数据进行分析获得有用信息。

完整代码

import pandas as pd
import time
import requests as req
from bs4 import BeautifulSoup
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36',
}
r = req.get('https://gz.esf.fang.com/chushou/3_249216629.htm?channel=2,2', headers=headers)
BeautifulSoup(r.text,'html.parser')
def get_true_url(old_url):'''获得正确的url'''r = req.get(url=old_url, headers=headers)if r'<title>跳转...</title>' in r.text:soup = BeautifulSoup(r.text, 'lxml')new_url = soup.find(name='a', attrs={'class': 'btn-redir'}).attrs['href']return new_urlreturn old_url
def getHouseInfo1(url):info = {}soup = BeautifulSoup(req.get(get_true_url(url)).text,"html.parser")res = soup.select(".tab-cont-right .trl-item1")#获取户型,建筑面积,单价,朝向,楼层,装修情况for re in res:tmp = re.text.strip().split('\n')name = tmp[-1].strip()if("朝向" in name):name = name.strip("进门")if("楼层" in name):name = name[0:2]if("地上层数" in name):name = "楼层"if("装修程度" in name):name = "装修"info[name] = tmp[0].strip()#获取小区名称,及总价xiaoqu = soup.select(".rcont .blue")[0].textinfo["小区名字"] = xiaoquzongjia = soup.select(".tab-cont-right .trl-item")info["总价"] = zongjia[0].textreturn info
#将爬取一页数据的代码放到方法中
domain = "https://gz.esf.fang.com"
city = "/house-a074/"
def pageFun1(i):page_url = domain + city +"i3"+ iprint(page_url)res = req.get(get_true_url(page_url))soup = BeautifulSoup(res.text,"html.parser")houses = soup.select(".shop_list dl")page_info_list = []#遍历返回的房屋信息for house in houses:#加try except异常处理try:info = getHouseInfo1(get_true_url(domain+house.select(".clearfix a")[0]['href']))page_info_list.append(info)#睡眠0.5秒钟time.sleep(1)except Exception as e:print("---------->",e)df = pd.DataFrame(page_info_list)return df
#示例
url=get_true_url('https://gz.esf.fang.com/chushou/3_248749815.htm?channel=1,2')
res=req.get(url,headers=headers)
soup = BeautifulSoup(res.text,"html.parser")
soup.head()#查看前五行
res = soup.select(".tab-cont-right .trl-item1")
res=soup.select('.cont. text-item clearfix')
res
getHouseInfo1('https://gz.esf.fang.com/chushou/3_248749815.htm?channel=1,2')
pageFun1('2')#获取一页信息
df = pd.DataFrame()
for i in range(1,101):try:df_a=pageFun1(str(i))df=df_a.append(df)print(df.size,df_a.size)except Exception as e:print ('Exception:',e)
df.to_csv('house_data.csv',encoding='ANSI')
df.shape
df.info()
df.index=range(len(df))#整理索引
df.isnull().sum()#观察缺失值
df['户型'].value_counts()#查看户型信息
df=df[df['户型']!='暂无']#将户型暂无的样本删除
small_list=[]#定义一个空列表来存放数量较少的户型
features_counts=df['户型'].value_counts()#各户型类别数量
l = len(features_counts.values)
for i in range(l):#循环获取数量较少的户型if features_counts[i]<10:small_list.append(features_counts.index[i])
for i in small_list:#循环删除df=df[df['户型']!=i]
df['户型'].value_counts()
df['朝向'].value_counts()#查看朝向信息
df['装修'].value_counts()#查看装修信息
df['楼层'].value_counts()#查看楼层信息
df['建筑面积']=df['建筑面积'].map(lambda x: x.replace('平米','')).astype(float)
df['建筑面积']
df['单价']=df['单价'].map(lambda x: x.replace('元/平米','')).astype(float)#将单价的元/平米删除,并转换为浮点数字类型
df['单价']
df=pd.get_dummies(df, columns=['朝向','楼层','装修','户型'])#将多分类变量分解成二分类
df.shape
col=['小区名字','总价','朝向_东西','装修_毛坯','楼层_低层','户型_1室0厅1卫']#将多余的以及会引起多重共线性的的特征提取出来
for i in col:del df[i]
df.shape
df=pd.read_csv('clean_house.csv',encoding='ANSI')
df=df.iloc[:,1:]
df.describe()
df['建筑面积'].plot.box(title='area')#画箱线图看分布情况
df['单价'].plot.box('price')
df=df[df['建筑面积']<=300]#删除面积大于三百的样本
area=df['建筑面积']
price=df['单价']
plt.figure(figsize=(20,10))
plt.scatter(area,price)#绘制面积与单价之间的散点图
area.corr(price)#计算相关系数
y=df['单价']#提取目标变量
X=df.drop(['单价'],axis=1)#特征
X_train,X_test,y_train,y_test=train_test_split(X,y)#将数据划分为训练集与测试集
sum(X['装修_豪华装修']*y)/len(X[X['装修_豪华装修']==1])
sum(X['装修_简装修']*y)/len(X[X['装修_简装修']==1])
sum(X['楼层_高层']*y)/len(X[X['楼层_高层']==1])
sum(X['楼层_中层']*y)/len(X[X['楼层_中层']==1])
X_train,X_test,y_train,y_test=train_test_split(X,y)
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.linear_model import Lasso
from sklearn.tree import DecisionTreeRegressor
from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import GridSearchCV
from sklearn.model_selection import cross_val_score
#线性回归
lr=LinearRegression(normalize=True)
lr.fit(X_train,y_train)
lr.score(X_train,y_train)#训练集R方
lr.score(X_test,y_test)#测试集
cross_val_score(lr,X,y)
#岭回归
from sklearn.linear_model import Ridge
rd=Ridge()
rd.fit(X_train,y_train)
rd.score(X_train,y_train)
rd.score(X_test,y_test)
#lasso回归
la=Lasso(max_iter=10000000)
la.fit(X_train,y_train)
la.score(X_train,y_train)
la.score(X_test,y_test)
la=Lasso(max_iter=10000000,alpha=50)
la.fit(X_train,y_train)
la.score(X_train,y_train)
la.score(X_test,y_test)
coef_la = pd.Series(la.coef_, X.columns).sort_values(ascending=False)
coef_la.plot(kind='barh',grid=True)
cross_val_score(la,X,y)
#决策树
from sklearn.tree import DecisionTreeRegressor
dt=DecisionTreeRegressor()
dt.score(X_train,y_train)
dt.score(X_test,y_test)
cross_val_score(dt,X,y)
from sklearn.model_selection import GridSearchCV
param_grid={'max_depth':[19,20,21,22],'max_features':[20,21,22,23]}
grid=GridSearchCV(DecisionTreeRegressor(),param_grid,cv=5)
grid.fit(X_train,y_train)
grid.best_params_
grid.best_score_
dt=DecisionTreeRegressor(**grid.best_params_)
dt.fit(X_train,y_train)
dt.score(X_train,y_train)
dt.score(X_test,y_test)
#随机森林
rf=RandomForestRegressor()
cross_val_score(rf,X,y).mean()
param_grid={'max_depth':[19,20,21,22],'max_features':[20,21,22,23]}
grid=GridSearchCV(RandomForestRegressor(),param_grid,cv=5)
grid.fit(X,y)
grid.best_params_
grid.best_score_
rf=RandomForestRegressor(**grid.best_params_)
rf.fit(X_train,y_train)
rf.score(X_train,y_train)
rf.score(X_test,y_test)
coef_rf = pd.Series(rf.feature_importances_, X.columns).sort_values(ascending=False)
coef_rf
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
plt.figure(figsize=(20,10))
coef_rf.plot(kind='barh')
#梯度提升树
from sklearn.ensemble import GradientBoostingRegressor
gbrt=GradientBoostingRegressor(n_estimators=2000)
param_grid={'learning_rate':[0.1,0.2,0.3,0.4]}
grid=GridSearchCV(gbrt,param_grid,cv=5)
grid.fit(X,y)
grid.best_params_
grid.best_score_
gbrt=GradientBoostingRegressor(n_estimators=2000,learning_rate=0.1)
gbrt.score(X_train,y_train)
gbrt.score(X_test,y_test)
coef_gbrt = pd.Series(gbrt.feature_importances_, X.columns).sort_values(ascending=False)
coef_gbrt.plot(kind='barh')
#AdaboostingRegression 通过改变样本权重来使得分类错误的样本获得更加的关注
from sklearn.ensemble import AdaBoostRegressor
ada=AdaBoostRegressor(base_estimator=DecisionTreeRegressor(),n_estimators=100)
ada.fit(X_train,y_train)
ada.score(X_train,y_train)
ada.score(X_test,y_test)
coef_ada = pd.Series(ada.feature_importances_, X.columns).sort_values(ascending=False)
coef_ada.plot(kind='barh')
#模型应用
test=X_test[1:5]
pred=rf.predict(test)
test['真实单价']=y_test[1:5]
test['预测单价']=pred
test.to_csv('预测应用.csv',encoding='ANSI')
test.T

基于python的回归与集成算法进行房价预测相关推荐

  1. 基于Python+Open CV的手势识别算法设计

    素材资料下载: 基于Python+OpenCV的手势识别算法设计源代码材料-机器学习文档类资源-CSDN下载采用Python的集成开发环境Pycharm进行本次课程设计,在Pycharm中进行需要库( ...

  2. 基于Python贝叶斯优化XGBoost算法调参报错“TypeError: ‘float‘ object is not subscriptable”

    基于Python贝叶斯优化XGBoost算法调参运行情况如下: iter target colsam- gamma max_depth min_ch- subsample 1 0.9398 0.804 ...

  3. python多叉树遍历_基于Python的多叉树遍历算法

    [ 综直厘翹 S 赛理 ) 信息记录材料 2019 年 5 月第 20 卷第 5 期 基于 Python 的多叉树遍历算法 钱雨波 , 王金祥 ( 指导老师 ) ( 延边大学 吉林 延边 1 3300 ...

  4. python算法的三种描述是什么_基于Python的产品经理必备算法描述

    原标题:基于Python的产品经理必备算法描述 产品经理需要懂点算法,作者用案例描述了几种产品经理的必备算法. 未来的世界,一定是信息科技主导的世界.未来的任何产品,都离不开信息科技的支撑.不论你是哪 ...

  5. 基于python的新型冠状肺炎患病人数预测

    基于python的新型冠状肺炎患病人数预测 前言: 数据源 腾讯疫情实时追踪 操作算法单一:二次指数平滑法(会因算法不同以及算法中参数alpha不同而导致误差) 正在测试该算法中alpha的值及其对数 ...

  6. 基于python的电商运动服饰销售分析与预测系统

    温馨提示:文末有 CSDN 平台官方提供的学长 Wechat / QQ 名片 :) 1. 项目背景 随着电⼦商务的蓬勃发展,⽹络服装销售已经逐渐成为消费者最为青睐的廉价购物渠道.本项目基于python ...

  7. 基于python的土壤细菌在kobas库的功能预测代码

    以下是一个基于Python的土壤细菌在KOBAS库的功能预测代码.在运行之前,需要先安装相关的Python库,如biopython.pandas.numpy.matplotlib等. # 导入必要的库 ...

  8. 波士顿房价预测python代码_使用Python和Numpy构建神经网络模型——波士顿房价预测案例...

    原标题:使用Python和Numpy构建神经网络模型--波士顿房价预测案例

  9. 基于Python实现并测试Modularity算法

    实现并测试Modularity算法 一.问题简述 1.1 社区发现问题 社区发现问题(Community Detection)用于解决网络中的聚类问题,从网络中发现社区.网络中的社区是一个内部节点联系 ...

最新文章

  1. Centos7手动安装OpenStack Mitaka版本--KeyStone安装
  2. 简单的html渲染模板引擎
  3. recyclerview item点击无效_Android列表布局专题(一)RecyclerView
  4. JDK 7的算法和数据结构
  5. linux下的node.js下载和安装
  6. __name__ == ‘__main__‘的原理
  7. odbc如何连oracle数据库,不安装Oracle如何连数据库(odbc驱动)
  8. 黑金花大理石_石材用上黑金花,一看就是富豪家
  9. freebsd 6.2 安装配置笔记[转]
  10. [leetcode]90. 子集 II
  11. mongoDB - 插入数据
  12. centOs环境初始化运行nginx+redis+zookeeper+dubbo_admin
  13. 数据管理(DMS):谁动了线上数据?
  14. Nvidia GPU Architecture--Fermi架构笔记
  15. pywinauto实现微信消息自动发送
  16. 2019春第四次课程设计实验报告
  17. java事务是什么_在java中,事务是什么?
  18. (HR面试)最常见的面试问题和技巧性答复
  19. 人民大学与加拿大女王大学金融硕士——你终究会成为你想成为的人
  20. Docker | 自定义网络(网关、子网地址)

热门文章

  1. 知乎最高赞回答!零代码基础,把报表做出科技感是什么体验?
  2. 比较好的python培训班
  3. [HBNIS2018]excel破解——buuctf
  4. 泡酒吧(barflyer)常用真正实用知识
  5. 联通java终面_中国联通面试经验
  6. 恒成立、能成立、恰成立习题
  7. 详解,最新整理,RabbitMQ,RocketMQ,Kafka 事务性,消息丢失,消息顺序性和消息重复发送的处理策略
  8. Vue学习——【第二弹】
  9. assicdoc 转换html,使用asciidoc生成spring官网风格的文档
  10. 台式电脑显示无法修复计算机,win10系统下提示“自动修复”无法修复你的电脑怎么解决...