1. Trang chủ
  2. » Luận Văn - Báo Cáo

đồ án môn học hk232 số hóa và quản trị thông tin số áp dụng số hóa và quản trị thông tin số đưa ra dự đoán giá bất động sản

31 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Trang 1

TRƯỜNG ĐẠI HỌC HỌC VĂN LANG

KHOA CÔNG NGHỆ THÔNG TIN

BÁO CÁO ĐỒ ÁN MÔN HỌC HK232

SỐ HÓA VÀ QUẢN TRỊ THÔNG TIN SỐ (71ITDS40403)ÁP DỤNG SỐ HÓA VÀ QUẢN TRỊ THÔNG TIN SỐ

ĐƯA RA DỰ ĐOÁN GIÁ BẤT ĐỘNG SẢN

Nhóm sinh viên thực hiện (Họ tên - Mã SV): 1 Lê Phúc Thảo (Trưởng nhóm) - 21748020107472 Châu Minh Mẫn - 2174802010744

3 Trần Hà Quốc Khang – 197CT097734.

5

TP Hồ Chí Minh – năm 2024

Trang 2

MỞ ĐẦU

Đề tài này tập trung vào áp dụng số hoá và quản trị thông tin số để dự đoán giá nhàtrong lĩnh vực bất động sản Trong thời đại công nghệ số phát triển mạnh mẽ nhưhiện nay, việc sử dụng các phương pháp số hoá và khai thác thông tin số đã trởthành xu hướng quan trọng trong việc phân tích và dự đoán giá trị của tài sản bấtđộng sản.

Bất động sản là một lĩnh vực có tính phức tạp và đa dạng, ảnh hưởng trực tiếp đếnnền kinh tế và đời sống của mọi người Việc dự đoán giá nhà chính xác và hiệu quảđóng vai trò quan trọng trong việc quyết định đầu tư, mua bán, hoặc cho thuê bấtđộng sản Tuy nhiên, việc dự đoán giá nhà không chỉ đơn giản là một phép tínhtoán dựa trên các yếu tố như diện tích, vị trí, hay số phòng Những yếu tố này chỉ làmột phần nhỏ trong quá trình quyết định giá trị của một căn nhà.

Trong bối cảnh thông tin số và công nghệ phát triển, chúng ta có thể thu thập vàphân tích một lượng lớn dữ liệu từ nhiều nguồn khác nhau để tạo ra các mô hình dựđoán giá nhà chính xác hơn Các phương pháp số hoá và quản trị thông tin số chophép chúng ta tổ chức, xử lý và phân tích dữ liệu bất động sản một cách hiệu quảđể tìm ra những mẫu chung và xu hướng tiềm ẩn Điều này giúp chúng ta hiểu rõhơn về những yếu tố ảnh hưởng đến giá trị của một căn nhà và từ đó đưa ra dựđoán chính xác về giá trị tương lai.

Trên cơ sở đó, đề tài này đặt ra mục tiêu nghiên cứu và phát triển các phương phápsố hoá và quản trị thông tin số để tạo ra mô hình dự đoán giá nhà bất động sản.Việc áp dụng các kỹ thuật như học máy, khai phá dữ liệu và phân tích định tính sẽgiúp chúng ta xây dựng các mô hình dự đoán giá nhà mạnh mẽ và linh hoạt Đồngthời, việc tìm hiểu các yếu tố ảnh hưởng đến giá trị bất động sản cũng đóng vai tròquan trọng trong việc cải thiện độ chính xác của mô hình dự đoán.

Trang 3

CHƯƠNG 1 GIỚI THIỆU CHỦ ĐỀ ĐỒ ÁN1 Các nghiên cứu liên quan đến đề tài

- Với nội dung của đề tài đồ án nghiên cứu, tập trung vào các chủ đề tìm hiểu vềcác khía cạnh của bất động sản Ta sẽ đi sâu vào việc tìm hiểu các thành phần củamột đối tượng bất động sản ví dụ như: diện tích, số phòng ngủ, phòng tắm, địaphương,… Tiếp theo ta sẽ tìm hiểu các cách tiếp cận của các phương pháp nghiêncứu như Machine Learning, từ đó chọn ra phương pháp phù hợp nhất cho việc dựđoán giá nhà đất, cụ thể là phương pháp hồi quy tuyến tính Linear regression.

- Hướng nghiên cứu quan trọng đến đề tài là các nhân tố ảnh hưởng đến giá nhàđất Khi lấy dũ liệu gí nhà đât của một đối tượng, có rất nhiều trường thuộc tínhnhưng chỉ có một số ít lại có ảnh hưởng đến giá nhà đất, chứ không phải toàn bộcác trường Khi tìm hiểu, thì sẽ phân tích từng khía cạnh, thuộc tính để có thể chọnra các yếu tố ảnh hưởng nhất đến giá nhà, từ đó có thể xây dựng mô hình và độchính xác cao nhất Tiếp theo, tìm hiểu tất cả các thuật toán được sử dụng, thử từngphương pháp mà từ đó có thể cho ra đời mô hình với độ chính xác cao nhất, bướcnày là bước quan trọng khi cần phải nắm rõ các kỹ thuật để chọn ra loại tốt nhấtcho bước train model và improve.

2 Các phương pháp thực hiện

2.1 Phương pháp dự đoán giá bất động sản:

- Hồi quy tuyến tính: phương pháp này xác định mối quan hệ giữa các nhân tố(như diện tích, vị trí, số phòng ngủ, số phòng tắm, …) và giá bất động sản thôngqua một hàm tuyến tính Các biến có thể được điều chỉnh và trọng số được xácđịnh để dự đoán giá trị của bất động sản.

- Mạng neural: Mạng neural nhân tạo có thể được sử dụng để xây dựng mô hìnhdự đoán giá bất động sản Mạng neural có khả năng học từ dữ liệu và tự điềuchỉnh các trọng số của mạng để tim ra mối quan hệ phức tạp giữa các biến đầuvào và giá trị đầu ra.

2.2 Quy trình dự đoán giá bất động sản:

Trang 4

- Thu thập dữ liệu: Quá trình dự đoán giá bất động sản bắt đầu bằng việc thuthập dữ liệu về các yêu tố liên quan như diện tích, vị trí, số phòng ngủ, tiện íchxung quanh, giá cả tương tự trong khu vực,…

- Tiền xử lý dữ liệu: Dữ liệu thu thập cần được tiền xử lý để loại bỏ dữ liệunhiễu, dữ liệu bị thiếu và chuẩn hóa dữ liệu.

- Xây dựng mô hình huấn luyện: Sau quá trình tiền xử lý dữ liệu, mô hình dựđoán được xây dựng bằng cách áp dụng phương pháp dự đoán như hồi quy tuyếntính Mô hình được huấn luyện bằng dữ liệu đã được xử lý.

- Đánh giá và tinh chỉnh mô hình: Mô hình được đánh giá bằng cách sử dụngcác phép đo đánh giá như độ chính xác, độ sai lệch trung bình,… Nếu cần thiết, môhình có thể được tinh chỉnh bằng cách điều chỉnh các tham số hoặc thử nghiệm cácphương pháp khác nhau.

- Dự đoán giá bất động sản: Sau khi mô hình đã được xác định và tinh chỉnh, nócó thể được sử dụng để dự đoán giá bất động sản dựa trên các giá trị đầu vào mới.

- Xây dựng giao diện người dùng: Sau khi có mô hình dự đoán, chúng ta cầnxây dựng một giao diện người dùng để người dùng có thể nhập thông tin về bấtđộng sản và nhận dự đoán giá trị tiềm năng Giao diện này có thể được phát triểnbằng các ngôn ngữ lập trình web như HTML, CSS, JavaScript.

- Triển khai và cập nhật: Sau khi hoàn thiện trang web, chúng ta triển khai nótrên một máy chủ web để cho phép người dùng truy cập Ngoài ra, để đảm bảo tínhchính xác và đáng tin cậy của dự đoán, chúng ta cần cập nhật dữ liệu và mô hìnhthường xuyên.

2.3 Phạm vi dự đoán giá bất động sản:

- Dự đoán giá bất động sản có thể áp dụng cho các loại tài sản như căn hộ, nhàở, đất đai thương mại hoặc công nghiệp.

Trang 5

- Phạm vi dự đoán có thể được xác định bới các yếu tố như địa điểm, thị trường,khu vực, diện tích, số phòng ngủ,…

- Các yếu tố khác như tình trạng kinh tế, xu hướng thị trường bất động sản,chính sách pháp lý và các yếu tố xã hội xung quanh cũng có thể được xem xét đểdự đoán giá bất động sản hiệu quả.

Trang 6

1 Quy trình áp dụng xây dựng đề tài

1.1 Sơ đồ hoạt động của mô hình

2 Xây dựng dự án “Dự đoán giá bất động sản”

2.1 Giai đoạn Get Data

- Giai đoạn Get Data là một phần quan trọng để thu thập dữ liệu từ các tập dữliệu có sẵn Trong dự án lần này, dữ liệu sẽ được thu thập từ Kaggle, bao gồmtìm kiếm tập dữ liệu, tải xuống và khám phá dữ liệu.

- Trước khi thu thập dữ liệu trên Kaggle, chúng ta cần tiến hành tìm kiếm dữliệu phù hợp với mục đích của dự án Quá trình này giúp cho chúng ta tìm kiếmđược tập dữ liệu phù hợp để sử dụng cho dự án

- Sau khi đã xác định được tập dữ liệu phù hợp, chúng ta tiến hành tải xuống tậpdữ liệu từ Kaggle Quá trình này đảm bảo cho chúng ta có tập dữ liệu đầy đủ vàsẵn sàng để sử dụng trong giai đoạn tiếp theo.

Trang 7

(Tập dữ liệu đã xác định)

- Cuối cùng trong giai đoạn Get Data, chúng ta sẽ khám phá dữ liệu để hiểu rõhơn về nội dung và đặc điểm của tập dữ liệu Khám phá dữ liệu giúp chúng ta cócái nhìn tổng quan về tập dữ liệu và chuẩn bị cho giai đoạn tiếp theo trong quátrình phân tích dữ liệu.

Trang 8

(Miêu tả dữ liệu)

2.2 Giai đoạn Clean Data

Sau quá trình thu thập dữ liệu, chúng ta sẽ tiến hành đến bước tiền xử lý dữ liệu.Đây là một phần quan trong trong quá trình xử lý dữ liệu Trong quá trình này,ta sẽ tập trung vào làm sạch và chuẩn hóa dữ liệu vừa thu thập được bao gồmcác bước như kiểm tra dữ liệu, xử lý giá trị bị thiếu, giá trị rỗng, và chuẩn hóadữ liệu.

Quá trình xử lý dữ liệu được thực hiện bằng các thư viẹn phổ biến trong ngônngữ lập trình Python Dưới đây là một số thư viện được sử dụng để xử lý dữ liệutrong dự án:

- Pandas: Là thư viện mạnh mẽ để xử lý và phân tích dữ liệu Nó cung cấp cáccấu trúc dữ liệu lịnh hoạt như DataFrame, Series và nhiều chức năng để xử lý dữliệu.

- NumPy: Là một thư viện quan trọng cho tính toán khoa học trong python Nócung cấp các cấu trúc dữ liệu và hàm số mạnh mẽ để làm việc với mảng đachiều Numpy được sử dụng để thực hiện các phép toán số học và thống kê trêndữ liệu.

* Đoạn code thực hiện:

import numpy as npimport pandas as pdimport seaborn as sns

import matplotlib.pyplot as plt

# đọc tệp csv

df=pd.read_csv("DATA.csv")

Trang 9

# xóa cột không cần thiết

df.drop( ['BROKERTITLE', 'MAIN_ADDRESS','ADMINISTRATIVE_AREA_LEVEL_2','ADDRESS', 'STATE', 'SUBLOCAL-ITY', 'LONG_NAME', 'FORMATTED_ADDRESS','MAIN_ADDRESS',], axis=1,inplace=True)

# loại bỏ khoảng trắng ở đầu và cuối giá trị của cột

df=df.apply(lambda x:x.str.strip() if x.dtype=='object'else x)

#loại bỏ các hàng có giá trị bị thiếu

#chuyển đổi các cột Price, beds,bath sang kiểu số

#đặt lại chỉ số

df.reset_index(drop=True, inplace=True)

#làm tròn chữ số thập phân

# Đổi tên các cột

df_rename= { 'TYPE': 'Loai',

'PRICE': 'Gia(USD)', 'BEDS': 'So phong ngu', 'BATH': 'So phong tam', 'LOCALITY':'Khu vuc',

'PROPERTYSQFT': 'Dien tich(feet)', 'LATITUDE': 'Vi do',

Trang 10

'LONGITUDE': 'Kinh do', 'STREET_NAME': 'Duong'}

df= df.rename(columns=df_rename)

df=df.dropna(subset=['Gia(USD)','Dien tich(feet)'])df['Gia(USD)']=df['Gia(USD)']/1000

#lưu tệp mới

df.to_csv('NEW_DATA.csv', index=False)

* Dữ liệu sau khi xử lý:

Trang 11

Sau quá trình xử lý dữ liệu, ta sẽ tiến hành trực quan hóa dữ liệu Quá trình nàygiúp hiểu và truyền đạt dữ liệu một cách dễ hiểu và trực quan Dưới đây là một sốthư viện được sử dụng để trực quan hóa dữ liệu trong dự án:

- Matplotlib: Là thư viện mạnh mẽ dùng để trực quan hóa trong Python Nó cungcấp các công cụ để tạo ra biểu đồ đường, biểu đồ cột, biểu đồ tròn, biểu đồ phântán,…

- Seaborn: Là thư viện trực quan hóa dữ liệu dựa trên Matplotlib Nó cung cấp cácgiao diện cao cấp hơn và các kiểu biểu đồ phức tạp hơn so với Matplotlib Seaborntập trung vào việc tạo ra các biểu đồ thống kê và biểu đồ khối lượng để trực quanhóa dữ liệu.

* Code trực quan hóa dữ liệu:

import pandas as pdimport numpy as np

from sklearn.model_selection import train_test_splitfrom sklearn.linear_model import LinearRegressionfrom sklearn.preprocessing import LabelEncoderfrom sklearn.preprocessing import StandardScalerfrom sklearn.preprocessing import OneHotEncoderfrom sklearn.metrics import mean_squared_errorfrom sklearn.pipeline import Pipeline

from sklearn.ensemble import RandomForestRegressorfrom sklearn.metrics import r2_score

import matplotlib.pyplot as pltimport seaborn as sns

from sklearn.compose import ColumnTransformer

# Đọc dữ liệu từ tệp CSV

Trang 12

data = pd.read_csv('NEW_DATA.csv')

# Vẽ biểu đồ phân tán bằng một đường tương quan

sns.regplot(data=data, x=x, y=y, ax=axes[1], color='teal',

scatter_kws={'edgecolor': 'white'}, line_kws={"color": "coral"}) # Tính hệ số tương quan

corr_coeff = data[[x, y]].corr().iloc[0, 1]

# Chú thích hệ số tương quan trên biểu đồ phân tán

axes[1].annotate(f'Correlation : {corr_coeff:.2f}', xy=(0.65, 0.9), xycoords='axesfraction', fontsize=14, color='coral')

# điều chỉnh theme

sns.despine(bottom=True, left=True)

axes[0].set(xlabel=f'{x}', ylabel='Frequency', title=f'{x} Distribution') axes[1].set(xlabel=f'{x}', ylabel=f'{y}', title=f'{x} vs {y}')

Trang 13

axes[1].yaxis.set_label_position("right") axes[1].yaxis.tick_right()

for p in axes[0].patches:

percentage = '{:.1f}%'.format(100 * p.get_height() / total) x_ = p.get_x() + p.get_width() / 2

Trang 14

# Thêm đường hồi quy vào biểu đồ phân tán

sns.regplot(data=data, x=x, y=y, ax=axes[2], color='coral', scatter=False) axes[2].get_legend().remove()

plt.tight_layout() plt.show()

plt.suptitle('Pairplot for num_features', y=1.02)plt.show()

plt.figure(figsize=(12, 8))

# Tạo biểu đồ heatmap

sns.heatmap(data[numeric_columns].corr(), annot=True, cmap='Spectral',linewidths=0.5,fmt=".2f")

plt.title('Correlation Heatmap', fontsize=15)plt.show()

# trực quan dữ liệu diện tích vs giá

num_combined_plot(data,'Dien tich(feet)','Gia(USD)')

#trực quan dữ liệu phòng ngủ vs giá

Trang 15

create_subplot_grid(data,'So phong ngu','Gia(USD)')

#trực quan dữ liệu phòng tắm với giá

create_subplot_grid(data,'So phong tam','Gia(USD)')

Trang 18

(Kết quả trực quan hóa dữ liệu)2.3 Giai đoạn Train Model

- Quá trình huấn luyện được thực hiện trên tập dữ liệu đã được chia thành tậphuấn luyện và tập kiểm tra Mô hình được huấn luyện với mục tiêu tối thiểu hóasai số dữ đoán giữa giá thực tế và giá dự đoán.

- Sau quá trình huấn luyện, mô hình được đánh giá bằng cách sử dụng cácphương pháp đánh giá hiệu suất như sai số trung bình, hệ số xác định (R-squared).

3 numeric_columns = [ 'So phong ngu', 'So phong tam', 'Dien tich(feet)']

4 categorical_columns = ['Loai', 'Khu vuc', 'Duong']5.

6 preprocessor = ColumnTransformer(transformers=[('num', StandardScaler(),numeric_columns),('cat', OneHotEncoder(handle_unknown='ignore'), cate-gorical_columns)])

7.

Trang 19

8 model = Pipeline(steps=[('preprocessor', preprocessor),

9 ('regressor', RandomForestRegressor())])10.

17.y_pred = model.predict(X_test)18.

19.mse = mean_squared_error(y_test, y_pred)

20.r2 = r2_score(y_test, y_pred)

22.print("R2: ",r2)23.

24.def evaluate_regression(model, X_train, y_train, X_test, y_test):

25 # Dự đoán về dữ liệu huấn luyện và kiểm tra

26 train_pred = model.predict(X_train)

27 test_pred = model.predict(X_test)

28

29 # Tính(R2) cho dữ liệu huấn luyện và kiểm tra

30 r2_train = r2_score(y_train, train_pred)

31 r2_test = r2_score(y_test, test_pred)

32

33 # Tính toán RMSE cho dữ liệu huấn luyện và kiểm tra

Trang 20

34 rmse_test = np.sqrt(mean_squared_error(y_test, test_pred))

35

36 # Trả về số liệu đánh giá

37 print("R-squared (R2) Train:", r2_train)

38 print("R-squared (R2) Test:", r2_test)

39 print("RMSE Test:", rmse_test)40.

Trang 21

62 plt.show()

63.evaluate_regression(model, X_train, y_train, X_test, y_test)64.

75.new_observation = pd.DataFrame({

76 'So phong ngu': [spn],

77 'So phong tam': [spt],

Trang 22

85.predicted_price = model.predict(new_observation)86.

87.print(f'Predicted price: {predicted_price[0]} k dollars.')88.

Trang 23

2.4 Giai đoạn thực hiện ứng dụng web

from flask import Flask, render_template, request

import joblib # Thêm dòng này để import thư viện joblib

from sklearn.compose import ColumnTransformerfrom sklearn.preprocessing import StandardScalerfrom sklearn.preprocessing import OneHotEncoderfrom sklearn.pipeline import Pipeline

from sklearn.ensemble import RandomForestRegressorimport pandas as pd

# Initialize Flask app

app = Flask( name )

# Load the trained model

trained_model = joblib.load('trained_model.joblib')

# Load your data

data = pd.read_csv('NEW_DATA.csv')

# Define numeric and categorical columns

numeric_columns = ['So phong ngu', 'So phong tam', 'Dien tich(feet)']categorical_columns = ['Loai', 'Khu vuc', 'Duong']

# Define the preprocessor

preprocessor = ColumnTransformer( transformers=[

('num', StandardScaler(), numeric_columns),

('cat', OneHotEncoder(handle_unknown='ignore'), categorical_columns) ])

Trang 24

# Create the pipeline with preprocessor and regressor

model = Pipeline(steps=[

('preprocessor', preprocessor),

('regressor', RandomForestRegressor())])

# Extract unique values for dropdowns

unique_khu_vuc = data['Khu vuc'].unique().tolist()unique_duong = data['Duong'].unique().tolist()

unique_so_phong_ngu = sorted(data['So phong ngu'].unique().tolist())unique_so_phong_tam = sorted(data['So phong tam'].unique().tolist())unique_dien_tich = sorted(data['Dien tich(feet)'].unique().tolist())unique_loai = data['Loai'].unique().tolist()

@app.route('/')def home():

return render_template('index.html', unique_khu_vuc=unique_khu_vuc,unique_duong=unique_duong,

unique_so_phong_ngu=unique_so_phong_ngu,unique_so_phong_tam=unique_so_phong_tam,

unique_dien_tich=unique_dien_tich, unique_loai=unique_loai)@app.route('/predict', methods=['POST'])

def predict():

# Get user input from the form

khu_vuc = request.form['khu_vuc']

Ngày đăng: 17/06/2024, 14:09

Xem thêm:

w