top of page

Prevedere il prezzo d'affitto di una casa con il Deep Learning e Python

L'affitto di una casa dipende da molti fattori. Con dati appropriati e tecniche di deep Learning, molte piattaforme immobiliari trovano le opzioni abitative in base al budget del cliente. Quindi, se vuoi imparare come utilizzare il deep Learning per prevedere il prezzo d'affitto di una casa, questo articolo è per te. In questo articolo, ti guiderò attraverso l'attività di previsione dell'affitto di case con l'apprendimento profondo utilizzando Python.


Prevedere il prezzo d'affitto di una casa con il Deep Learning e Python
Prevedere il prezzo d'affitto di una casa con il Deep Learning e Python

Quali sono i fattori che incidono sul costo di una casa?

Il costo di una casa può variare a seconda della posizione, delle dimensioni e del numero di stanze. Un altro fattore che può cambiare il costo di una casa è il tipo di materiale da costruzione. Ad esempio, le case in mattoni costeranno di più rispetto alle case in legno. Il costo di una casa può dipendere anche dal numero di camere da letto e bagni. Ad esempio, una casa con due camere da letto costerà più di una casa con una camera da letto. Il costo di una casa varierà anche a seconda del tipo di finestre e della quantità di isolamento. Ad esempio, una casa con molte finestre sarà più costosa di una con poche finestre. Il costo di una casa varierà anche a seconda della vista.


Come si può utilizzare il deep learning per prevedere il costo futuro di una casa?

Il deep learning è una branca dell'intelligenza artificiale che studia l'uso dei computer per imitare il comportamento umano intelligente. È utilizzato in molti settori, come il servizio clienti, l'e-commerce, l'istruzione e l'assistenza sanitaria. Un'applicazione comune dell'intelligenza artificiale è l'uso dell'apprendimento automatico per prevedere il costo futuro di una casa. L'idea è quella di creare un modello in grado di utilizzare i dati di mercato attuali per prevedere il costo futuro di una casa. Questo tipo di modello è chiamato modello di regressione. Il modello utilizzerà i dati attuali per prevedere il valore futuro di una casa. Ad esempio, il modello può utilizzare il numero medio di giorni in cui le case restano sul mercato prima di vendere per prevedere per quanto tempo le case rimarranno sul mercato prima di vendere.


Prevedere l' affitto della casa con Python


L'affitto di una proprietà abitativa dipende da molti fattori come:

  1. numero di camere da letto, ingresso e cucina

  2. dimensione della proprietà

  3. il pavimento della casa

  4. tipo di zona

  5. località della zona

  6. Città

  7. stato d'arredo della casa

Per costruire un sistema di previsione dell'affitto di una casa, abbiamo bisogno di dati basati sui fattori che influenzano l'affitto di una proprietà abitativa. Ho trovato un set di dati di Kaggle che include tutte le funzionalità di cui abbiamo bisogno. È possibile scaricare il set di dati da qui . NON ABBIAMO TROVATO DATASET ITALIANI, ma se ne conoscete qualcuno postatelo nei commenti !


Previsione dell'affitto di una casa utilizzando Python

Inizierò l'attività di previsione dell'affitto della casa importando le librerie Python necessarie e il set di dati :



import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import plotly.express as px
import plotly.graph_objects as go

data = pd.read_csv("House_Rent_Dataset.csv")
print(data.head())

Output:

    Posted On  BHK   Rent  Size            Floor    Area Type  \
0  2022-05-18    2  10000  1100  Ground out of 2   Super Area   
1  2022-05-13    2  20000   800       1 out of 3   Super Area   
2  2022-05-16    2  17000  1000       1 out of 3   Super Area   
3  2022-07-04    2  10000   800       1 out of 2   Super Area   
4  2022-05-09    2   7500   850       1 out of 2  Carpet Area   

              Area Locality     City Furnishing Status  Tenant Preferred  \
0                    Bandel  Kolkata       Unfurnished  Bachelors/Family   
1  Phool Bagan, Kankurgachi  Kolkata    Semi-Furnished  Bachelors/Family   
2   Salt Lake City Sector 2  Kolkata    Semi-Furnished  Bachelors/Family   
3               Dumdum Park  Kolkata       Unfurnished  Bachelors/Family   
4             South Dum Dum  Kolkata       Unfurnished         Bachelors   

   Bathroom Point of Contact  
0         2    Contact Owner  
1         1    Contact Owner  
2         1    Contact Owner  
3         1    Contact Owner  
4         1    Contact Owner  


Prima di andare avanti, controlliamo se i dati contengono valori null o meno:


print(data.isnull().sum())

Output:

Posted On            0
BHK                  0
Rent                 0
Size                 0
Floor                0
Area Type            0
Area Locality        0
City                 0
Furnishing Status    0
Tenant Preferred     0
Bathroom             0
Point of Contact     0
dtype: int64

Diamo un'occhiata alle statistiche descrittive dei dati:


print(data.describe())
               BHK          Rent         Size     Bathroom
count  4746.000000  4.746000e+03  4746.000000  4746.000000
mean      2.083860  3.499345e+04   967.490729     1.965866
std       0.832256  7.810641e+04   634.202328     0.884532
min       1.000000  1.200000e+03    10.000000     1.000000
25%       2.000000  1.000000e+04   550.000000     1.000000
50%       2.000000  1.600000e+04   850.000000     2.000000
75%       3.000000  3.300000e+04  1200.000000     2.000000
max       6.000000  3.500000e+06  8000.000000    10.000000

Ora diamo un'occhiata all'affitto medio, mediano, più alto e più basso delle case:


print(f"Mean Rent: {data.Rent.mean()}")
print(f"Median Rent: {data.Rent.median()}")
print(f"Highest Rent: {data.Rent.max()}")
print(f"Lowest Rent: {data.Rent.min()}")

Output:

Mean Rent: 34993.45132743363
Median Rent: 16000.0
Highest Rent: 3500000
Lowest Rent: 1200


Analisi grafica Modello di previsione dell'affitto della casa


Ora diamo un'occhiata all'affitto delle case nelle diverse città in base al numero di camere da letto, corridoi e cucine:


figure = px.bar(data, x=data["City"], 
                y = data["Rent"], 
                color = data["BHK"],
            title="Rent in Different Cities According to BHK")
figure.show()

Prevedere l' affitto di una casa con il Deep Learning e Python
Prevedere l' affitto di una casa con il Deep Learning e Python

Ora diamo un'occhiata agli affitti delle case nelle diverse città a seconda della tipologia di zona:



figure = px.bar(data, x=data["City"], 
                y = data["Rent"], 
                color = data["Area Type"],
            title="Rent in Different Cities According to Area Type")
figure.show()

Prevedere l' affitto di una casa con il Deep Learning e Python
Prevedere l' affitto di una casa con il Deep Learning e Python

Diamo un'occhiata all'affitto delle case nelle diverse città in base allo stato di arredo della casa:


figure = px.bar(data, x=data["City"], 
                y = data["Rent"], 
                color = data["Furnishing Status"],
            title="Rent in Different Cities According to Furnishing Status")
figure.show()
Prevedere l' affitto di una casa con il Deep Learning e Python
Prevedere l' affitto di una casa con il Deep Learning e Python

Ora diamo un'occhiata all'affitto delle case nelle diverse città in base alle dimensioni della casa:



figure = px.bar(data, x=data["City"], 
                y = data["Rent"], 
                color = data["Size"],
            title="Rent in Different Cities According to Size")
figure.show()

Prevedere l' affitto di una casa con il Deep Learning e Python
Prevedere l' affitto di una casa con il Deep Learning e Python

Diamo un'occhiata al numero di case disponibili in affitto in diverse città in base al set di dati:

cities = data["City"].value_counts()
label = cities.index
counts = cities.values
colors = ['gold','lightgreen']

fig = go.Figure(data=[go.Pie(labels=label, values=counts, hole=0.5)])
fig.update_layout(title_text='Number of Houses Available for Rent')
fig.update_traces(hoverinfo='label+percent', textinfo='value', textfont_size=30,
                  marker=dict(colors=colors, line=dict(color='black', width=3)))
fig.show()

Prevedere l' affitto di una casa con il Deep Learning e Python
Prevedere l' affitto di una casa con il Deep Learning e Python

Ora diamo un'occhiata al numero di case disponibili per i diversi tipi di inquilini:


# Preferenza dell'inquilino
tenant = data["Tenant Preferred"].value_counts()
label = tenant.index
counts = tenant.values
colors = ['gold','lightgreen']

fig = go.Figure(data=[go.Pie(labels=label, values=counts, hole=0.5)])
fig.update_layout(title_text='Preference of Tenant in India')
fig.update_traces(hoverinfo='label+percent', textinfo='value', textfont_size=30,
                  marker=dict(colors=colors, line=dict(color='black', width=3)))
fig.show()

Prevedere l' affitto di una casa con il Deep Learning e Python
Prevedere l' affitto di una casa con il Deep Learning e Python


Modello di previsione dell'affitto della casa

Ora convertirò tutte le caratteristiche categoriali in caratteristiche numeriche di cui abbiamo bisogno per addestrare un modello di previsione dell'affitto di una casa:



data["Area Type"] = data["Area Type"].map({"Super Area": 1, 
                                           "Carpet Area": 2, 
                                           "Built Area": 3})
data["City"] = data["City"].map({"Mumbai": 4000, "Chennai": 6000, 
                                 "Bangalore": 5600, "Hyderabad": 5000, 
                                 "Delhi": 1100, "Kolkata": 7000})
data["Furnishing Status"] = data["Furnishing Status"].map({"Unfurnished": 0, 
                                                           "Semi-Furnished": 1, 
                                                           "Furnished": 2})
data["Tenant Preferred"] = data["Tenant Preferred"].map({"Bachelors/Family": 2, 
                                                         "Bachelors": 1, 
                                                         "Family": 3})
print(data.head())

Output:

    Posted On  BHK   Rent  Size            Floor  Area Type  \
0  2022-05-18    2  10000  1100  Ground out of 2          1   
1  2022-05-13    2  20000   800       1 out of 3          1   
2  2022-05-16    2  17000  1000       1 out of 3          1   
3  2022-07-04    2  10000   800       1 out of 2          1   
4  2022-05-09    2   7500   850       1 out of 2          2   

              Area Locality  City  Furnishing Status  Tenant Preferred  \
0                    Bandel  7000                  0                 2   
1  Phool Bagan, Kankurgachi  7000                  1                 2   
2   Salt Lake City Sector 2  7000                  1                 2   
3               Dumdum Park  7000                  0                 2   
4             South Dum Dum  7000                  0                 1   

   Bathroom Point of Contact  
0         2    Contact Owner  
1         1    Contact Owner  
2         1    Contact Owner  
3         1    Contact Owner  
4         1    Contact Owner  

Ora dividerò i dati in set di allenamento e test:


from sklearn.model_selection import train_test_split
x = np.array(data[["BHK", "Size", "Area Type", "City", 
                   "Furnishing Status", "Tenant Preferred", 
                   "Bathroom"]])
y = np.array(data[["Rent"]])

xtrain, xtest, ytrain, ytest = train_test_split(x, y, 
                                                test_size=0.10, 
                                                random_state=42)

Ora formiamo un modello di previsione dell'affitto di una casa utilizzando un modello di rete neurale LSTM :


from keras.models import Sequential
from keras.layers import Dense, LSTM
model = Sequential()
model.add(LSTM(128, return_sequences=True, 
               input_shape= (xtrain.shape[1], 1)))
model.add(LSTM(64, return_sequences=False))
model.add(Dense(25))
model.add(Dense(1))

model.summary()


Model: "sequential"
_________________________________________________________________
 Layer (type)                Output Shape              Param #   
=================================================================
 lstm (LSTM)                 (None, 7, 128)            66560     
                                                                 
 lstm_1 (LSTM)               (None, 64)                49408     
                                                                 
 dense (Dense)               (None, 25)                1625      
                                                                 
 dense_1 (Dense)             (None, 1)                 26        
                                                                 
=================================================================
Total params: 117,619
Trainable params: 117,619
Non-trainable params: 0
_________________________________________________________________

Alleniamo il modello

model.compile(optimizer='adam', loss='mean_squared_error')
model.fit(xtrain, ytrain, batch_size=1, epochs=21)

Output:

Epoch 1/21
4271/4271 [==============================] - 35s 7ms/step - loss: 7038080512.0000
Epoch 2/21
4271/4271 [==============================] - 31s 7ms/step - loss: 6481502720.0000
Epoch 3/21
4271/4271 [==============================] - 31s 7ms/step - loss: 6180754944.0000
Epoch 4/21
4271/4271 [==============================] - 31s 7ms/step - loss: 5968361472.0000
Epoch 5/21
4271/4271 [==============================] - 30s 7ms/step - loss: 5770649088.0000
Epoch 6/21
4271/4271 [==============================] - 29s 7ms/step - loss: 5618835968.0000
Epoch 7/21
4271/4271 [==============================] - 30s 7ms/step - loss: 5440893952.0000
Epoch 8/21
4271/4271 [==============================] - 29s 7ms/step - loss: 5341533696.0000
Epoch 9/21
4271/4271 [==============================] - 30s 7ms/step - loss: 5182846976.0000
Epoch 10/21
4271/4271 [==============================] - 31s 7ms/step - loss: 5106288128.0000
Epoch 11/21
4271/4271 [==============================] - 30s 7ms/step - loss: 5076118528.0000
Epoch 12/21
4271/4271 [==============================] - 30s 7ms/step - loss: 5001080320.0000
Epoch 13/21
4271/4271 [==============================] - 31s 7ms/step - loss: 4941253120.0000
Epoch 14/21
4271/4271 [==============================] - 33s 8ms/step - loss: 4904356864.0000
Epoch 15/21
4271/4271 [==============================] - 29s 7ms/step - loss: 4854262784.0000
Epoch 16/21
4271/4271 [==============================] - 30s 7ms/step - loss: 4855796736.0000
Epoch 17/21
4271/4271 [==============================] - 36s 8ms/step - loss: 4764052480.0000
Epoch 18/21
4271/4271 [==============================] - 30s 7ms/step - loss: 4709226496.0000
Epoch 19/21
4271/4271 [==============================] - 31s 7ms/step - loss: 4702300160.0000
Epoch 20/21
4271/4271 [==============================] - 31s 7ms/step - loss: 4670900736.0000
Epoch 21/21
4271/4271 [==============================] - 31s 7ms/step - loss: 4755582976.0000
<keras.callbacks.History at 0x7fd1deb6c9d0>

Facciamo previsioni dell'affitto di una casa conil Deep Learning usando Python

Ora ecco come prevedere l'affitto di un immobile utilizzando il modello addestrato:


print("Enter House Details to Predict Rent")
a = int(input("Number of BHK: "))
b = int(input("Size of the House: "))
c = int(input("Area Type (Super Area = 1, Carpet Area = 2, Built Area = 3): "))
d = int(input("Pin Code of the City: "))
e = int(input("Furnishing Status of the House (Unfurnished = 0, Semi-Furnished = 1, Furnished = 2): "))
f = int(input("Tenant Type (Bachelors = 1, Bachelors/Family = 2, Only Family = 3): "))
g = int(input("Number of bathrooms: "))
features = np.array([[a, b, c, d, e, f, g]])
print("Predicted House Price = ", model.predict(features))

Output:

Enter House Details to Predict Rent
Number of BHK: 3
Size of the House: 1100
Area Type (Super Area = 1, Carpet Area = 2, Built Area = 3): 2
Pin Code of the City: 1100
Furnishing Status of the House (Unfurnished = 0, Semi-Furnished = 1, Furnished = 2): 1
Tenant Type (Bachelors = 1, Bachelors/Family = 2, Only Family = 3): 3
Number of bathrooms: 2
Predicted House Price =  [[34922.3]]

Conclusione sulla previsione dell'affitto di una casa con Deep Learning usando Python

Ecco come utilizzare il Deep Learning per prevedere l'affitto di una proprietà abitativa. Con dati appropriati e tecniche di Deep Learning, molte piattaforme immobiliari trovano le opzioni abitative in base al budget del cliente. Spero ti sia piaciuto questo articolo sulla previsione dell'affitto di una casa con deep Learning usando Python. Sentiti libero di porre domande preziose nella sezione commenti qui sotto.


















1 則留言

評等為 0(最高為 5 顆星)。
暫無評等

新增評等
Romeo Ceccato
Romeo Ceccato
2022年9月03日

Ottimo articolo, in questi casi, come sempre nell'amito del reperimento dei dati, la cosa fondamentale è proprio la qualità dei dati che si vanno a reperire. Il lavoro potrà avere un buon risultato solo a fronte dell'accuratezza e della coerenza dei dati disponibili, il setaccio lo si deve regolare a mano...

按讚
PCR (5).gif
PCR (4).gif
PCR.gif
PCR.gif
PCR.gif
PCR.gif
PCR (5).gif
3.gif
Vediamo se riesci a cliccarmi ! Nascondo una Sorpresa... (2).png

Ciao 

🤗 Articoli consigliati dalla nostra
Intelligenza Artificiale in base ai tuoi interessi

Correlazione Alta

Correlazione Media

Correlazione Bassa

Iscriviti

VUOI DIVENTARE UN MEMBRO DI INTELLIGENZA ARTIFICIALE ITALIA GRATUITAMENTE E TRARNE I SEGUENTI BENEFICI?

Corsi Gratis

più di 150 lezioni online

Dataset Gratis

più di 150o dataset

Ebook Gratis

più di 10 libri da leggere

Editor Gratis

un editor python online

Progetti Gratis

più di 25 progetti python

App Gratis

4 servizi web con I.A.

Unisciti Ora a oltre
1.000.000
di lettori e appassionanti d'I.A.

Tutto ciò che riguarda l'intelligenza Artificiale, in unico posto, in italiano e gratis.

MEGLIO DI COSI' NON SI PUO' FARE

Dopo l'iscrizione riceverai diversi Regali

VUOI SCRIVERE ARTICOLI INSIEME A NOI.

Grazie

bottom of page