💖💖作者:IT跃迁谷毕设展
💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我!
💛💛想说的话:感谢大家的关注与支持!
💜💜
Java实战项目集
微信小程序实战项目集
Python实战项目集
安卓Android实战项目集
大数据实战项目集
💕💕文末获取源码
文章目录
基于Hadoop的杭州市常住人口分析系统-选题背景
在当今信息时代,数据的快速增长和存储需求已经成为一个突出的挑战。特别是在人口统计和社会科学领域,对常住人口数据的分析需求日益增长。随着城市化进程的不断加速,常住人口的统计和深入分析变得尤为重要。然而,传统的数据处理方法已经无法满足这一需求。因此,本课题的研究背景根植于大数据时代,迫切需要一种创新的解决方案,以应对常住人口数据的高度复杂性和庞大规模,这正是基于Hadoop的常住人口分析系统的必要性所在。
尽管数据存储和处理技术取得了巨大的进步,但在处理常住人口数据时仍然存在重大问题。传统数据库系统面临着规模扩展性有限和数据处理速度较慢的问题,尤其在处理大规模数据时表现不佳。此外,常住人口数据具有多样性,包括个体特征、社会关系、迁移模式等复杂属性,这使得数据的准确分析和模式发现变得更为困难。因此,现有解决方案在应对这些挑战时表现不佳,迫切需要一种更强大和高效的工具。本课题旨在填补这一空白,提供一种基于Hadoop的解决方案,以应对大规模常住人口数据的复杂性,从而更好地满足社会科学研究的需要。
基于Hadoop的杭州市常住人口分析系统-技术选型
大数据技术:Hadoop、Spark、Hive
开发技术:Python、Django框架、Vue、Echarts、机器学习
软件工具:Pycharm、DataGrip、Anaconda、VM虚拟机
基于Hadoop的杭州市常住人口分析系统-图片展示
基于Hadoop的杭州市常住人口分析系统-代码展示
# 整合数据
train = pd.merge(gpu_edu, people_num, on='年份')
# print(train) # 查看整合后数据
# 总人口,要拟合的目标值
target = train['总人口']
# 输入特征
train.drop(['总人口'],axis = 1 , inplace = True)
# print(train) # 查看输入特征
num_of_train_data = train.shape[0]
# 将train与test整合到一起,方便预测test的总人口
combined = train.append(test).reset_index(drop=True)
# print(combined) # 查看整合后的输入特征
# 选出非空列
def get_cols_with_no_nans(df,col_type):
'''
Arguments :
df : The dataframe to process
col_type :
num : to only get numerical columns with no nans
no_num : to only get nun-numerical columns with no nans
all : to get any columns with no nans
'''
if (col_type == 'num'):
trains = df.select_dtypes(exclude=['object'])
elif (col_type == 'no_num'):
trains = df.select_dtypes(include=['object'])
elif (col_type == 'all'):
trains = df
else :
print('Error : choose a type (num, no_num, all)')
return 0
cols_with_no_nans = []
for col in trains.columns:
if not df[col].isnull().any():
cols_with_no_nans.append(col)
return cols_with_no_nans
# 分别对数值特征和分类特征进行处理
num_cols = get_cols_with_no_nans(combined, 'num')
cat_cols = get_cols_with_no_nans(combined, 'no_num')
combined = combined[num_cols + cat_cols]
# 对分类特征进行One-Hot编码
def oneHotEncode(df,colNames):
for col in colNames:
if( df[col].dtype == np.dtype('object')):
# pandas.get_dummies 可以对分类特征进行One-Hot编码
dummies = pd.get_dummies(df[col],prefix=col)
df = pd.concat([df,dummies],axis=1)
# drop the encoded column
df.drop([col],axis = 1 , inplace=True)
return df
combined = oneHotEncode(combined, cat_cols)
# 将这些数据转化为PyTorch模型所能接受的Tensor形式:
# 训练数据集特征
train_features = torch.tensor(combined[:num_of_train_data].values, dtype=torch.float)
# 训练数据集目标
train_labels = torch.tensor(target.values, dtype=torch.float).view(-1, 1)
# 测试数据集特征
test_features = torch.tensor(combined[num_of_train_data:].values, dtype=torch.float)
print("train data size: ", train_features.shape)
print("label data size: ", train_labels.shape)
print("test data size: ", test_features.shape)
class BPNet(nn.Module):
def __init__(self, features):
super(BPNet, self).__init__()
self.linear1 = nn.Linear(features, 128)
self.linear2 = nn.Linear(128, 256)
self.linear3 = nn.Linear(256, 512)
self.linear4 = nn.Linear(512, 256)
self.linear5 = nn.Linear(256, 128)
self.linear6 = nn.Linear(128, 1)
def forward(self, x):
y = self.linear1(x)
y = nn.functional.relu(y)
y = self.linear2(y)
y = nn.functional.relu(y)
y = self.linear3(y)
y = nn.functional.relu(y)
y = self.linear4(y)
y = nn.functional.relu(y)
y = self.linear5(y)
y = nn.functional.relu(y)
y = self.linear6(y)
return y
model = BPNet(features=train_features.shape[1])
#
# # 使用均方误差作为损失函数
criterion = nn.MSELoss(reduction='mean')
基于Hadoop的杭州市常住人口分析系统-文档展示
基于Hadoop的杭州市常住人口分析系统-结语
💕💕
Java实战项目集
微信小程序实战项目集
Python实战项目集
安卓Android实战项目集
大数据实战项目集
💟💟如果大家有任何疑虑,欢迎在下方位置详细交流。