[PYTHON] Si le Budokan est un immeuble de bureaux de location

Advent Calendar 2019

Ceci est l'article sur le 20e jour du calendrier de l'Avent Estie 2019. Veuillez consulter les autres articles par tous les moyens. https://qiita.com/advent-calendar/2019/estie

introduction

Je suis Miyano, CTO d'Estie. Chez estie, j'évalue le loyer des immeubles de bureaux, mais je me suis dit: "Peut-être qu'il y a un endroit où il est plus rentable de louer un bureau?"

Par conséquent, j'ai comparé le loyer lorsque ** Budokan ** était un bureau avec le modèle de retour de LightGBM, et vérifié lequel avait les meilleures ventes par rapport à l'utilisation actuelle, comme les spectacles en direct et les événements nationaux.

Au fait, le code est à github.

Conclusion

En conclusion, si tous les Budokan sont loués comme bureaux, les ventes annuelles augmenteront de 300 millions **.

Le prix unitaire par tsubo du loyer du Budokan étant estimé à ** 22 006 yens / tsubo **, les ventes annuelles sont "d'environ 1,35 milliard de yens" en supposant que le taux d'occupation est de 1.

D'autre part, les prévisions de ventes de l'exercice 2019 indiquées dans le "Reiwa 1st Year Balance Budget" publié par le Budokan Il était de 1 031 445 000 yens («environ 1,03 milliard de yens»), ce fut donc un résultat choquant qu'il serait plus rentable d'en faire un bureau. (Bien que je suppose que le taux de fonctionnement est de 1)

Ce que j'ai fait

Acquisition de données d'entraînement

Au Japon, il est très difficile de collecter des données correctes sur les loyers, et il n'y a presque pas de données qui sont tombées au public. Par conséquent, cette fois, nous utiliserons les "Informations du rapport d'évaluation" divulguées cette année. Ces données contiennent des informations hypothétiques sur la balance des paiements à différents points, qui ont servi de base de calcul pour déterminer le «prix du terrain». Par conséquent, le loyer hypothétique est également répertorié, il ne s'agit donc pas du loyer réel contracté, mais il semble utilisable.

Pour le moment, je n'ai téléchargé que Tokyo. (Reportez-vous à github pour un moulage spécifique)

Apprentissage

Sélection de fonctionnalité

Même si toutes les informations des données ci-dessus peuvent être utilisées, ce n'est pas bon si les caractéristiques ne peuvent pas être calculées pour le Budokan. Par conséquent, les éléments suivants sont sélectionnés comme quantités de caractéristiques.

{
    "landprice": "Prix du terrain",
    "gross_floor_area": "Surface de plancher totale",
    "floors": "Nombre d'étages hors sol",
    "road_width": "Largeur(Largeur de la route)",
    "nearest_station_distance": "Distance de la gare la plus proche",
    "lot_coverage": "Ratio de couverture du bâtiment",
    "office": "Que ce soit pour le bureau ou non-hot",
    "retail": "Est-ce pour un usage commercial?",
    "residential": "Est-ce pour un usage résidentiel?",
    "hotel": "Est-ce pour un usage hôtelier?",
    "industrial": "Est-ce à usage industriel?",
}

Je ne connais pas le prix du terrain du Budokan, mais il semble bon d'utiliser le prix du terrain le plus proche.

Modèle d'apprentissage

J'ai utilisé LightGBM sans penser à rien. High para convient également cette fois.

{
     "metric": "rmse",
     "n_estimators": 200,
     "objective": "regression"
}

précision

Pour le moment, je l'ai divisé en deux parties avec train_test_split et vérifié la précision. Voici un diagramme de dispersion de la précision.

accuracy.png

Le coefficient de décision était de «65,19%». Je ne peux rien dire, mais n'est-ce pas une bonne idée de ne rien régler?

Budokan louer

C'est une prévision de loyer de la salle d'arts martiaux de la ville.

En fait, il serait préférable de deviner après avoir appris tous les cas, mais le modèle créé ci-dessus est utilisé tel quel.

À propos, le montant de la fonctionnalité est extrait du Site officiel.


feature_values = ['landprice', 'gross_floor_area', 'floors', 'road_width', 'nearest_station_distance',
                  'lot_coverage', 'office', 'retail', 'residential', 'hotel', 'industrial']
target_col = 'rent_tsubo'

class Estimator:
    def __init__(self):
        self.read_model()

    def read_model(self):
        '''ml.Charger le modèle appris avec py
        '''
        with open('accuracy/model.pkl', mode='rb') as f:
            self.model = pickle.load(f)

    def estimate(self, df: pd.core.frame.DataFrame) -> pd.core.frame.DataFrame:
        '''Location de blocs de données contenant des fonctionnalités(Prix unitaire par tsubo)Estimer
        '''
        pred = self.model.predict(
            np.array(df[feature_values]), num_iteration=self.model.best_iteration)
        df[target_col] = pred
        df[target_col] = df[target_col].astype(int)
        return df

def estimate_budokan():
    '''Prévisions de loyer pour Budokan
    '''
    budokan_info = {
        'landprice': 3130000,  #Prix du terrain le plus proche(2-2-5, Kudan Minami, Chiyoda-ku, Tokyo)Valeur moyenne de(3120000, 3140000)
        'gross_floor_area': 21133.300 * 0.3025,  #En unités de tsubo
        'floors': 3,  #3 étages hors sol
        'road_width': 10,  #J'ai vu Google Maps et ça ressemblait à 10 m
        'nearest_station_distance': 5 * 80,  #5 minutes à pied* 80m/Minutes
        'lot_coverage': 100 * 8132.240 / 12625.000,  #Zone de construction/La zone du site
        'office': 1,  #En supposant une propriété de bureau
        'retail': 0,
        'residential': 0,
        'hotel': 0,
        'industrial': 0,
    }
    estimator = Estimator()
    budokan = estimator.estimate(pd.io.json.json_normalize(budokan_info))
    budokan_dic = budokan.to_dict(orient='list')
    budokan_result = {k: budokan_dic[k][0] for k in budokan_dic.keys()}
    return budokan_result

if __name__ == '__main__':
    budokan_result = estimate_budokan()
    print(budokan_result[target_col]) # 22006

Au fait, la largeur de la route était "d'environ 10 m?" Quand j'ai regardé la carte Google, je l'ai mise telle quelle.

image.png

Comparaison avec le solde actuel de Budokan

En supposant que le loyer est de 22006 (yens / tsubo / mois), la surface louable est d'environ 80% de la surface totale de plancher (* estimée par estiepro), et le taux d'occupation est de 1.

Location(Cercle/Tsubo/Mois) *Superficie louable(Tsubo) *Taux d'utilisation* 12ヶMois
=Location* (Surface de plancher totale* 0.8 ) * 1.0 * 12
= 22006 * (21133.300 * 0.3025 * 0.8) * 12
= 1,350,532,497 yens(Environ 13.500 millions de yens)

Les ventes annuelles sont «d'environ 1,35 milliard de yens».

En regardant le [Budokan's First Year Balance Budget, `Reiwa 2 du 1er avril 2019 Il semble que le chiffre d'affaires total des entreprises au 31 mars 2014 soit «d'environ 1,03 milliard de yens».

image.png

Bien sûr, ce n'est qu'une estimation, donc je ne sais pas si cela se produira vraiment. ..

en conclusion

À propos, le loyer du Budokan basé sur le modèle d'estimation du loyer des bureaux développé par estie (e-rent: également présenté dans le Nikkei Shimbun-> https://www.nikkei.com/article/DGXMZO49454100V00C19A9XY0000/) est

«19 600 yens / tsubo»

était. Même avec ce résultat, les ventes annuelles seront de "1,2 milliard de yens", il semble donc que cela puisse vraiment être un bureau ... (à l'exclusion de la partie émotionnelle)

Chez estie, nous développons de tels algorithmes et applications pour simplifier la recherche de bureau! Si vous êtes intéressé, faites-le! !!

https://www.wantedly.com/companies/company_6314859/projects

estie -> https://www.estie.jp estiepro -> https://pro.estie.jp Site de la société-> https://www.estie.co.jp

Recommended Posts

Si le Budokan est un immeuble de bureaux de location
Vérifiez si la chaîne est un nombre en python
python> vérifier NoneType ou non> si a == None:> si a vaut None:
Qu'est-ce qu'une distribution?
Qu'est-ce qu'un terminal?
Utilisez Property Decorator?
Qu'est-ce qu'un hacker?
Qu'est-ce qu'un pointeur?
Déterminer si la chaîne est l'heure avec une expression régulière python
Si un ingénieur est invité à organiser un banquet