You are on page 1of 31

VISVESVARAYA TECHNOLOGICAL UNIVERSITY

“Jnana Sangama”, Belagavi-590018, Karnataka

AI&ML Application Development Laboratory (18AIL76)


Mini Project Report
on
“Urban Governance Forecasting with Machine Learning”

Submitted in partial fulfillment for the award of the degree of


Bachelor of Engineering in
Artificial Intelligence & Machine Learning

Submitted by

USN Name
1BI20AI014 Harsh Singh

for the academic year 2023-24

Under the Guidance of


Mr. Manjunatha P B
Assistant Professor

Department of Artificial Intelligence & Machine Learning


Bangalore Institute of Technology
K.R. Road, V.V.Pura, Bengaluru-560 004
2023-24
VISVESVARAYA TECHNOLOGICAL UNIVERSITY
“Jnana Sangama”, Belagavi-590018, Karnataka

BANGALORE INSTITUTE OF TECHNOLOGY


Department of Artificial Intelligence & Machine Learning
K.R. Road, V.V.Pura, Bengaluru-560 004

Certificate

This is to certify that AI&ML Application development Laboratory Mini


project work entitled “Urban Governance Forecasting with Machine
Learning” carried out by

USN Name
1BI20AI014 Harsh Singh

bonafide students of Bangalore Institute of Technology in partial fulfillment


for the award of degree of Bachelor of Engineering in Artificial Intelligence &
Machine Learning under Visvesvaraya Technological University, Belagavi,
during theacademic year 2023-24 is true representation of mini project work
completed satisfactorily.

Mr. Manjunatha P B Dr. Jyothi D. G. Dr. Aswath M. U.


Assistant Professor Professor & HoD Principal
Dept. of AI&ML Dept. of AI&ML BIT
BIT, Bengaluru BIT, Bengaluru. Bengaluru.

Name of the Examiners, Signature with date


1.

2.
ACKNOWLEDGEMENT

The satisfaction and euphoria that accompany the completion of a task would be incomplete
without crediting the people who made it possible, whose constant guidance and
encouragement crowned the efforts with success.

We would like to profoundly thank Management of Bangalore Institute of Technology for


providing such a healthy environment for successful completion of mini project work.

We would like to express our thanks to the Principal Dr. Aswath M.U. for his
encouragement that motivates us for the successful completion of mini project work.

It gives us immense pleasure to thank Dr. Jyothi D.G. Professor & Head, Department of
Artificial Intelligence & Machine Learning for her constant support and encouragement.

We would like to express our deepest gratitude to our mini project guide Mr. Manjunatha
P.B for his constant support and guidance throughout the Mini Project work.

We are very much pleasured to express our sincere gratitude to the friendly co-operation
showed by all the staff members of Artificial Intelligence and Machine Learning
Department, BIT.

Last but not the least, we would here by acknowledge and thank our friends and family who
have been our source of inspiration always instrumental in successful completion of the
Project work.

Date: 01-01-2023
Place: Bengaluru

Harsh Singh

i
ABSTRACT

In an era marked by technological advancements, this project presents a pioneering


exploration into the intersection of machine learning and urban governance. Focusing on
the city of Detroit, the research aims to harness the predictive capabilities of machine
learning to forecast property maintenance fine compliance, thus revolutionizing traditional
enforcement strategies. By assimilating and analyzing diverse datasets, ranging from
building permits to citizen complaints, the model endeavors to optimize enforcement
processes and guide resource allocation more effectively.

The novelty of this project lies not only in its predictive analytics but also in the adaptive
nature of the model, designed to respond dynamically to the evolving complexities of urban
dynamics. Unlike static prediction models, this approach provides a forward-looking
strategy, enabling urban governance to stay ahead of emerging challenges in property
maintenance compliance.

Beyond the immediate impact on enforcement efficiency, this research establishes a


groundbreaking precedent for data-driven urban governance. The symbiotic relationship
between predictive analytics and civic management not only ensures more efficient and
targeted enforcement but also sets the stage for a broader discussion on the transformative
role of machine learning in municipal decision-making.

ii
INDEX

Acknowledgement .................................................................................. i
Abstract ................................................................................................. ii
List of figures ....................................................................................... iii
1. Introduction ........................................................................................ 1

1.1 Introduction to project ................................................................... 1


2. Literature Review ............................................................................... 2
2.1 Existing System ............................................................................. 3
2.2 Proposed System............................................................................ 3

3. System Requirements Specification .................................................... 6


3.1 Hardware Requirements ................................................................. 6

3.2 Software Requirement................................................................... 6


4. System Design .................................................................................... 8
4.1 System Architecture ....................................................................... 8
4.2 Data Flow Diagram ....................................................................... 9
5. Implementation and testing ............................................................... 12
6. Results and Screenshots .................................................................... 19
Conclusion ........................................................................................ 23

References
LIST OF FIGURES

Fig Title Page no


No
4.1 System Design Architecture 9
6.1 Understanding about dataset 19

6.2 19
Getting to know about the dataset
6.3 Plotting out features 20

6.4 Relationship between features 21


6.5 Plotting Boxplot 21
6.6 Different outliers 22
6.7 Distribution of the dataset 22

iii
CHAPTER – 1
INTRODUCTION
Chapter 1

INTRODUCTION

Urban governance is undergoing a paradigm shift with the advent of advanced technologies,
presenting unprecedented opportunities to enhance decision-making processes and address
complex challenges. This project delves into the domain of machine learning to explore its
potential in forecasting property maintenance fine compliance in urban environments, with a
specific emphasis on the city of Detroit. By leveraging predictive analytics, the research aims
to revolutionize traditional enforcement mechanisms, offering a forward-looking approach to
urban governance.

In recent years, the rapid advancements in machine learning algorithms and data analytics have
paved the way for transformative applications in various sectors, including urban governance.
The integration of technology has become pivotal in fostering efficiency and innovation within
municipal administrations. The city of Detroit, emblematic of urban revitalization efforts,
serves as a compelling case study for the intersection of machine learning and urban
governance. With a rich history and a diverse set of challenges,

This project not only seeks to explore the technical aspects of machine learning but also aims
to contribute to a broader discourse on the evolving nature of governance in urban settings. By
shifting the focus from reactive enforcement measures to proactive, data-driven forecasting,
the study endeavors to lay the groundwork for a more adaptive and responsive urban
governance model. The implications of successful implementation in Detroit could have far-
reaching effects, setting a precedent for other cities grappling with similar challenges. As
technology continues to evolve, the findings from this research endeavor may offer valuable
insights into how cities can leverage machine learning to optimize decision-making processes,
foster community engagement, and ultimately create more resilient and sustainable urban
environments.
.

Dept., of AI&ML,BIT 2023-24 1


CHAPTER – 2
LITERATURE REVIEW
Chapter 2

LITERATURE REVIEW
Paper 1:

[1] Title: “Social Housing and Housing Justice: Pathways to Housing


Decommodification” by Jacob Udell, Celeste Hornbach, Oksana Mironova, Samuel
Stein (2018)
In the literature review "Pathways to Social Housing in New York," the authors call for a
shift in the housing system, emphasizing home value over real estate. They highlight a three-
decade trend of capital chasing rising property values, leading to crises like high rent
burdens. The review navigates the intersection of housing justice and social housing,
advocating for policies that transfer land and housing to social ownership and make
extractive housing models less viable. Tenant protections and code enforcement are crucial
precursors to success.
Paper 2:
[2] Title: “Role of Real Estate Valuation Surveyors in the Malaysian National Taxation” by Mohd
Hasrol Haffiz Bin Aliasak, Mohd Farid Bin Sa’ad (2015)
In the literature review on the "Role of Real Estate Valuation Surveyors in Malaysian
National Taxation," the authors examine the crucial involvement of Valuation Surveyors in
determining real estate values for taxation. They emphasize the distinct roles of these
professionals in both public and private sectors, analyzing relevant laws such as the Stamp
Act 1949 and Real Property Gain Tax Act 1976. The review highlights the historical
evolution of the valuation surveyor profession in Malaysia and categorizes taxation into
direct and indirect taxes.

Paper 3:
[3] Title: “Factors affecting residential land prices” by Doa'a Majed Al Totanji, Md.
Sayuti Bin Ishak (2023)

Dept., of AI&ML,BIT 2023-24 2


LITERATURE REVIEW CHAPTER 2

The literature survey by Doa'a Majed Al Totanji and Md. Sayuti Bin Ishak investigates
factors influencing residential land prices globally. The study, spanning 2000 to 2022,
reviews 185 publications, categorizing factors into social, economic, environmental, and
governmental aspects. Real estate's socioeconomic role, the supply-demand dynamic, and
the lack of consensus on factors are highlighted. The analysis reveals a surge in publications,
with the United States, China, Australia, Malaysia, and Canada leading.

2.1 EXISTING SYSTEM:


The current system for property maintenance fine compliance predominantly employs
traditional, non-machine learning methods, which exhibit limitations in their ability to
harness advanced predictive analytics and conduct thorough research on the multifaceted
factors impacting property fines. The conventional approaches lack the sophistication
necessary to adapt to dynamic urban contexts and utilize comprehensive data analysis
effectively. The absence of machine learning algorithms in the existing system poses
challenges in achieving optimal predictions and fine enforcement strategies.

2.2 PROBLEM STATEMENT:


Our project tackles urban governance challenges by developing a machine learning model
to forecast property maintenance fines, optimizing enforcement for responsive, sustainable
urban development in Detroit

2.3 PROPOSED SYSTEM:

The proposed system, "Urban Governance Forecasting with Machine Learning," leverages
advanced algorithms to revolutionize property fine compliance. By analyzing
comprehensive datasets encompassing building permits and citizen complaints, the model
optimizes enforcement strategies, guiding effective resource allocation. Its adaptive nature
accommodates dynamic urban dynamics, moving beyond static predictions. This forward-
looking approach not only ensures efficient fine enforcement but also establishes a
groundbreaking precedent for data-driven urban governance.

Dept., of AI&ML,BIT 2023-24 3


CHAPTER – 3
SYSTEM REQUIREMENTS
Chapter 3
SYSTEM REQUIREMENTS

3.1 Hardware Requirements

Processor: Intel i5 10th gen or above


Monitor Screen: 14 or above
RAM: 6GB or above
Memory: 512GB SSD/ 1TB HDD and above

3.2 SOFTWARE REQUIREMENT

Programming Languages: Python


Software Required: Jupyter notebook
Python Libraries: csv, image, numpy, matplotlib
Operating System: Windows
Terminal window- to run the Python file using commands

Dept., of AI&ML,BIT 2023-24 6


CHAPTER 4
SYSTEM DESIGN
Chapter 4
SYSTEM DESIGN

4.1 ALGORITHM

• Data Source: Derived from a comprehensive property fine database, the dataset
encompasses crucial attributes influencing fine compliance. Parameters include
historical fine records, property characteristics, neighborhood details, and citizen
complaints.
• Data Quality Assurance: Stringent validation processes ensure data integrity and
accuracy, addressing anomalies, inconsistencies, or missing values. Data is sourced
from reliable municipal records, enforcement agencies, and community feedback.
• Data Cleaning: Impeccable data hygiene is maintained through techniques such as
imputation, duplicate elimination, and error rectification. Specialized methods
handle outliers and skewed distributions, ensuring the dataset's robustness.
• Data Transformation: Numeric and categorical variables undergo normalization
and encoding, respectively. Feature engineering introduces relevant indicators,
enhancing the dataset's predictive richness.
• Model Suitability: Extensive Thorough research identifies models suitable for
property fine prediction. Classification algorithms, including Decision Trees,
Random Forests, Support Vector Machines, k-Nearest Neighbors, Logistic
Regression, and Stochastic
• Alignment with Data Characteristics: Model assumptions are rigorously
evaluated for compatibility with property fine data, ensuring accurate predictions.
• Model Training: Selected models are meticulously trained on the dataset, leveraging
informative features to predict fine compliance as a categorical outcome .
• Model Evaluation: Rigorous evaluation on the test dataset employs key metrics such
as accuracy, precision, recall, F1-score, and confusion matrix analysis. Cross-validation
techniques fortify models against overfitting or underfitting.
 Performance Analysis: Evaluation metrics provide insights into model strengths and
areas for improvement. Feature interpretability aids in deciphering factors influencing
fine compliance.
 Iterative Refinement: Informed by evaluation insights, iterative refinement begins,
involving feature adjustments, model experimentation, and hyperparameter fine-tuning
for optimal predictive performance

Dept., of AI&ML,BIT 2023-24 8


SYSTEM DESIGN CHAPTER 4

4.2 Dataflow

Fig 4.1 System Design Architecture

Data Acquisition: The prediction of property fines involves obtaining a dataset


containing diverse factors influencing compliance with property maintenance fines.
Attributes such as property details, violation codes, payment history, and other relevant
features are crucial. The dataset is sourced from reliable repositories, ensuring data
quality, and loaded into a Pandas DataFrame for initial exploration.

Data Preprocessing: Preprocessing for property fine prediction includes handling missing
values, addressing outliers, and transforming variables for model optimization.
Techniques like imputation, outlier removal, and feature transformation are applied.
Additionally, the dataset is encoded to prepare it for machine learning model training.

Feature Selection: Identifying key features impacting property fine compliance is


essential. Exploring correlations, visualizing data distribution, and selecting relevant
features contribute to building an effective predictive model. Correlation matrices and

Dept., of AI&ML,BIT 2023-24 9


SYSTEM DESIGN CHAPTER 4

visualizations aid in understanding feature relationships.

Splitting the Dataset: The dataset is split into training and testing sets to facilitate model
training and evaluation. Standardization ensures consistent feature scaling, and the dataset
is divided into input features (X_train, X_test) and the target variable (y_train, y_test).

Classification: Various classification algorithms, such as Decision Trees, Support Vector


Machines (SVM), Random Forests, Logistic Regression, K-Nearest Neighbors (KNN),
and Stochastic Gradient Descent (SGD), are employed. These algorithms are selected
based on their suitability for predicting property fine compliance.

Predict Result: Each classifier is trained on the training set and evaluated on the testing
set. Predictions are made, and accuracy scores are computed for each classifier.
Hyperparameter tuning may be performed for optimal performance. The chosen model is
trained on the full dataset, and predictions are made on the test set. Performance metrics,
including accuracy, classification reports, and confusion matrices, provide insights into the
model's effectiveness in predicting property fine compliance.

Dept., of AI&ML,BIT 2023-24 10


CHAPTER 5
IMPLEMENTATION
IMPLEMENTATION CHAPTER 5

Chapter 5
IMPLEMENTATION
pip install feature-engine
import pandas as pd
import pandas as pd
import numpy as np

pd.set_option('display.max_columns', 999)
trainset = pd.read_csv('train.csv', encoding = 'ISO-8859-1')
testset = pd.read_csv('test.csv', encoding = 'ISO-8859-1')
address = pd.read_csv('addresses.csv')
latlot = pd.read_csv('latlons.csv')

print('number of examples in trainset: {}\n'.format(trainset.shape[0]))


print('number of features in trainset: {}\n'.format(trainset.shape[1]))
print('number of examples in testset: {}\n'.format(testset.shape[0]))
print('number of features in testset: {}\n'.format(testset.shape[1]))
print('Column names of data: {}'.format(trainset.columns))
trainset.compliance.value_counts(dropna=False, normalize=True)
print('randomly select 10 samples to display address patterns: \n')

for i in range(10):
print('sample ', str(i))
print(address.sample(2), '\n')
print('number of repeated ticket_id exist both in train set and test set:
{}'.format(len(set(trainset.ticket_id).intersection(
testset.ticket_id))))
print('number of test set ticket_id exist in address:
{}'.format(len(set(testset.ticket_id).intersection(
address.ticket_id))))
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

Dept., of AI&ML, BIT 2023-24 12


IMPLEMENTATION CHAPTER 5

from sklearn.decomposition import PCA


final_numerical_features = ['fine_amount', 'admin_fee', 'state_fee', 'late_fee',
'discount_amount', 'judgment_amount', 'payment_amount']
X_final = trainset[final_numerical_features].dropna()
y_final = trainset.loc[X_final.index, 'compliance']
fig = plt.figure(1, figsize=(8, 6))
ax = fig.add_subplot(111, projection='3d')
X_reduced_final = PCA(n_components=3).fit_transform(X_final)
scatter = ax.scatter(X_reduced_final[:, 0], X_reduced_final[:, 1], X_reduced_final[:, 2],
c=y_final,
cmap=plt.cm.Set1, edgecolor='k', s=40)
ax.set_title("First three PCA directions")
ax.set_xlabel("1st eigenvector")
ax.set_ylabel("2nd eigenvector")
ax.set_zlabel("3rd eigenvector")
ax.xaxis.set_ticklabels([])
ax.yaxis.set_ticklabels([])
ax.zaxis.set_ticklabels([])
plt.show()
from sklearn.model_selection import train_test_split
state = 35

trainset_complete_case = trainset.dropna(axis=0, subset=['compliance']) #drop nan


candidate_features = ['fine_amount', 'admin_fee', 'state_fee', 'late_fee', 'discount_amount',
'judgment_amount']

X_train, X_test, y_train, y_test = train_test_split(


trainset_complete_case[candidate_features],
trainset_complete_case['compliance'],
test_size=0.3,
random_state=state)

print('training set features: {} \n training set examples: {}'.format(X_train.shape[1],


X_train.shape[0]))

Dept., of AI&ML, BIT 2023-24 13


IMPLEMENTATION CHAPTER 5

from sklearn.dummy import DummyClassifier


from sklearn.metrics import roc_auc_score

state = 35

strategies = ['stratified', 'most_frequent', 'prior']

dumclfs = {}
for strategy in strategies:
clf = DummyClassifier(strategy=strategy, random_state = state)
clf.fit(X_train, y_train)
y_preds = clf.predict(X_test)
auc = roc_auc_score(y_test, y_preds)
dumclfs[strategy]=auc

print('dummy classifiers auc roc scores in validation set: ')


for stra, val in sorted(dumclfs.items(), key=lambda item: item[1], reverse=True):
print('strategy: {}: {:.2f}'.format(stra, val))
from sklearn.ensemble import RandomForestClassifier

rf = RandomForestClassifier().fit(X_train, y_train)
rf_predicted = rf.predict(X_test)
auc = roc_auc_score(y_test, rf_predicted)
dumclfs['rf']=auc

print('RF Classifier \n', auc)


# check viloation code
print(f'total violation code in train set: \n {train_featI_prep.violation_code.nunique()}\n',
f'total violation code in test set: \n {test_featI.violation_code.nunique()}')
print(f' are all the violation code in test set exist in train set? : \n \
{test_featI.violation_code.unique().all() in train_featI_prep.violation_code.unique()}')
# what is the pattern of violation code? Fine the main pattern for encoding later.
for i in range(30):
print(train_featI_prep.violation_code.sample(1).values)

Dept., of AI&ML, BIT 2023-24 14


IMPLEMENTATION CHAPTER 5

import re

def violation_code_extract(code):
try:
result = re.match(r'^(\d+-\d+)', code).group()
except:
result = None
return result

violation = train_featI_prep.violation_code.apply(violation_code_extract)
violation.value_counts()
for dataset in [train_featI_prep, test_featI]:
dataset['simplified_code'] = dataset['violation_code'].apply(lambda code: code.split('-
')[0] if '-' in code else code)
print(dataset.groupby('simplified_code')['judgment_amount'].agg(['min', 'mean',
'median', 'max', 'std', 'count']))
for dataset in [train_featI_prep, test_featI]:
dataset['simplified_code'] = dataset['simplified_code'].apply(lambda x: x if x in ['9',
'22', '61'] else '0')
print(dataset.groupby('simplified_code')['judgment_amount'].agg(['min', 'mean',
'median', 'max', 'std', 'count']))
print('number of missing values in training set: \n{}'
.format(train_featII.isnull().sum(axis=0)))

print('\nnumber of missing values in test set: \n{}'


.format(test_featII.isnull().sum(axis=0)))

for dataset in [train_featII, test_featII]:


dataset.loc[dataset.lat.isnull(), 'lat'] = dataset['lat'].mean()
dataset.loc[dataset.lon.isnull(), 'lon'] = dataset['lon'].mean()

print('\nAny na left? \n{}'.format(train_featII.isnull().sum().any() *


test_featII.isnull().sum().any()))
from sklearn.model_selection import train_test_split

Dept., of AI&ML, BIT 2023-24 15


IMPLEMENTATION CHAPTER 5

from sklearn.preprocessing import LabelEncoder

X, y = train_featII.drop([target], axis=1), train_featII[target]

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, stratify=y,


random_state=35)

# Encode 'agency_name'
lbe_agency = LabelEncoder().fit(pd.concat([X_train['agency_name'],
X_test['agency_name']]))
X_train['agency_name'] = lbe_agency.transform(X_train['agency_name'])
X_test['agency_name'] = lbe_agency.transform(X_test['agency_name'])

# Encode 'simplified_code'
lbe_violation = LabelEncoder().fit(pd.concat([X_train['simplified_code'],
X_test['simplified_code']]))
X_train['simplified_code'] = lbe_violation.transform(X_train['simplified_code'])
X_test['simplified_code'] = lbe_violation.transform(X_test['simplified_code'])
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder

# Define the columns to be one-hot encoded


categorical_cols = ['agency_name', 'simplified_code']

# Create a column transformer


preprocessor = ColumnTransformer(
transformers=[
('cat', OneHotEncoder(), categorical_cols)
],
remainder='passthrough'
)

# Fit and transform the training data

Dept., of AI&ML, BIT 2023-24 16


IMPLEMENTATION CHAPTER 5

X_train_ohe = preprocessor.fit_transform(X_train)
# Transform the test data
X_test_ohe = preprocessor.transform(X_test)
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import roc_auc_score
from sklearn.model_selection import GridSearchCV
import pandas as pd
import numpy as np
from sklearn.preprocessing import LabelEncoder
from sklearn.preprocessing import OneHotEncoder
from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.metrics import roc_auc_score

regr_rf = RandomForestRegressor()
grid_values = {'n_estimators': [10, 100], 'max_depth': [None, 30]}
grid_clf_auc = GridSearchCV(regr_rf, param_grid=grid_values, scoring='roc_auc')
grid_clf_auc.fit(X_ohe, y)
print('Grid best parameter (max. AUC): ', grid_clf_auc.best_params_)
Print('Grid best score (AUC): ', grid_clf_auc.best_score_)

Dept., of AI&ML, BIT 2023-24 17


CHAPTER – 6
RESULTS WITH SNAPSHOTS
CHAPTER 6
RESULTS AND SNAPSHOTS

Fig 6.1 Understanding about dataset


Importing necessary libraries needed for our model prediction and estimation

Fig 6.2 Getting to know about the dataset


Printing values of the Dataframe and getting the overview of the dataset.

Dept., of AI&ML,BIT 2023-24 19


Fig 6.3 Plotting out features

Finding out the accurate feature of interest by plotting various plots and finding their
correlation

Dept., of AI&ML,BIT 2023-24 20


.Fig 6.4 Relationship between features
Finding out the dependence and correlation between features.

Fig 6.5 Plotting Boxplot


Plotting a box plot for the waiting time

Dept., of AI&ML,BIT 2023-24 21


Fig 6.6 Different outliers
List of outliers’ distribution of the test and test data.

Fig 6.7 Distribution of the dataset


Printing out min, mean, median, max and standard distribution

Dept., of AI&ML,BIT 2023-24 22


CONCLUSION

In conclusion, the project on predicting property maintenance fine compliance


through machine learning represents a significant stride towards enhancing urban
governance. By leveraging advanced algorithms and comprehensive datasets encompassing
diverse factors, the model offers a forward-looking approach to optimize enforcement
strategies. The research not only ensures efficient fine prediction but also underscores the
transformative potential of data-driven urban governance.
The predictive analytics framework, marrying machine learning with civic
management, sets a precedent for responsive, sustainable urban development. As cities
grapple with the challenges of blight violations and unpaid fines, this project charts a course
for proactive, cost-effective enforcement, mitigating the burden on resources. The
integration of predictive insights into municipal decision-making marks a crucial step in
shaping the future of property maintenance enforcement and underscores the indispensable
role of machine learning in fostering smarter, more resilient urban landscapes.

Dept., of AI&ML,BIT 2023-24 23


REFERENCES

 Title: " Real Estate Valuation and Market Analysis" by Joshua Kahr, John Wiley &
Sons

 Title: "Property Valuation Principles" by David Isaacson, Taylor & Francis

 Title: " Urban Property Management" by Robert C. Kyle, Floyd M. Baird, Urban
Land Institute

 Title: " Property Investment Appraisal" by Peter Wyatt, Neil Crosby, John Wiley &
Sons

You might also like