В этой статье я подключусь к базе данных Oracle, работающей в облаке (Oracle Автономное хранилище данных), и создам простое регрессионное приложение в среде Python с образцами данных, взятыми отсюда.
Прежде всего, я сделаю это приложение в автономном хранилище данных (БД), которое предлагается в качестве сервиса в Oracle Cloud. Все, что мне нужно, это учетная запись Oracle Cloud. Вы можете бесплатно получить услугу «Автономное хранилище данных», которая является одной из услуг Always Free (Oracle Free Tier) , и вы можете предоставить и использовать ее в облаке за считанные минуты без какой-либо установки. Вы можете перейти по ссылке для получения подробной информации.
Вы можете запустить службу автономного хранилища данных через облачную инфраструктуру Oracle, как показано на видео ниже.
Второй компонент, который мне нужен, это установить пакет cx_oracle в python для подключения к базе данных Oracle в облаке из моей локальной среды. Следующим шагом является установка Oracle Client на моем компьютере.
Вам также могут понравиться: Хранилища данных: прошлое, настоящее и будущее
Вы можете сделать вышеуказанные установки, перейдя по ссылке .
Мне нужен набор данных и проблема для его реализации. Я выбираю цены на жилье в Бостоне как проблему. Чтобы решить эту проблему, я построю регрессионную модель. Я получаю набор данных из Kaggle ( Boston Housing ).
Давайте сначала рассмотрим набор данных BOSTON_HOUSING.
Имя столбца | Описание | Тип данных |
CRIM | уровень преступности на душу населения по городам. | номер |
гп | доля жилой земли зонирована под участки более 25 000 кв. футов. | номер |
промышл | доля неторговых площадей на город. | номер |
Чес | Фиктивная переменная реки Чарльз (= 1, если тракт ограничивает реку; 0 в противном случае). | номер |
NOx | концентрация оксидов азота (частей на 10 миллионов). | номер |
комната | среднее количество комнат в доме. | номер |
возраст | доля домовладельцев, построенных до 1940 года. | номер |
дис | средневзвешенное расстояние до пяти бостонских центров занятости. | номер |
радиан | индекс доступности к радиальным магистралям. | номер |
налог | ставка налога на имущество на полную стоимость за 10 000 долларов США. | номер |
ptratio | соотношение ученик-учитель по городу. | номер |
черный | 1000 (Bk — 0,63) ^ 2, где Bk — доля черных в городе. | номер |
lstat | более низкий статус населения (в процентах). | номер |
MEDV | средняя стоимость домов, занимаемых владельцами, в 1000 долларов. |
номер |
Теперь, когда мы проверили детали с нашим набором данных, давайте загрузим BOSTON_HOUSING, который мы загрузили, в нашу базу данных Oracle.
Сначала создайте таблицу Oracle, в которую мы будем загружать загруженный набор данных (train.csv).
SQL
xxxxxxxxxx
1
CREATE TABLE BOSTON_HOUSING
2
(
3
ID NUMBER,
4
CRIM NUMBER,
5
ZN NUMBER,
6
INDUS NUMBER,
7
CHAS NUMBER,
8
NOX NUMBER,
9
RM NUMBER,
10
AGE NUMBER,
11
DIS NUMBER,
12
RAD NUMBER,
13
TAX NUMBER,
14
PTRATIO NUMBER,
15
BLACK NUMBER,
16
LSTAT NUMBER,
17
MEDV NUMBER
18
);
SQL
xxxxxxxxxx
1
CREATE TABLE BOSTON_HOUSING_TEST
2
(
3
ID NUMBER,
4
CRIM NUMBER,
5
ZN NUMBER,
6
INDUS NUMBER,
7
CHAS NUMBER,
8
NOX NUMBER,
9
RM NUMBER,
10
AGE NUMBER,
11
DIS NUMBER,
12
RAD NUMBER,
13
TAX NUMBER,
14
PTRATIO NUMBER,
15
BLACK NUMBER,
16
LSTAT NUMBER,
17
MEDV NUMBER
18
);
Теперь, когда мы создали нашу таблицу, мы загрузим в таблицу набор данных, который мы скачали как CSV; у нас есть несколько способов сделать это:
- Использование Oracle External Table.
- Использование Oracle SQL Loader.
- Использование редакторов SQL-PL / SQL (Oracle SQL Developer, Toad, PL / SQL Developer и т. Д.).
Я загружу набор данных с помощью редактора, который я использую. Я использую Oracle SQL Developer в качестве редактора. С Oracle SQL Developer вы можете загружать данные следующим образом .
SQL
xxxxxxxxxx
1
SELECT * FROM BOSTON_HOUSING;
Мы завершили процесс загрузки набора данных.
Когда мы наблюдаем данные, мы видим детали в соответствии с различными характеристиками домов. Каждый ряд содержит информацию о конкретных характеристиках дома. Наши основные параметры для регрессионного анализа представлены в этой таблице. В этой таблице мы прогнозируем результат регрессионного анализа. Столбец MEDV является целевой переменной, которую мы будем использовать в этом анализе.
Теперь давайте начнем писать необходимый код на стороне Python.
питон
xxxxxxxxxx
1
import cx_Oracle as cx
2
import pandas as pd
3
import warnings
4
warnings.filterwarnings('ignore')
5
#Connect to Autonomous Data Warehouse
7
con = cx.connect("ADMIN","yourPass","mltest_high")
8
query = 'SELECT * from boston_housing'
10
data_train = pd.read_sql(query, con=con)
11
query = 'SELECT * from boston_housing_test'
13
data_test = pd.read_sql(query, con=con)
С помощью cx_oracle мы подключились к ADW и оттуда извлекли данные из соответствующих таблиц во фрейм данных через python.
питон
xxxxxxxxxx
1
data_train.head()
2
data_test.head()
Теперь давайте создадим и протестируем нашу модель с данными, которые у нас есть.
питон
xxxxxxxxxx
1
######### Building Model with Boosting Method for Regression #######
2
from sklearn.ensemble import AdaBoostRegressor
3
X = data_train.iloc[:,1:14] # features
5
y = data_train.iloc[:,14:15] # target variable
6
#training
8
regr = AdaBoostRegressor(random_state=0, n_estimators=100)
9
regr.fit(X, y)
10
#see feature importance
12
regr.feature_importances_
13
#model test with test data set from oracle database (data_test df)
15
data_test.iloc[1:2,1:14] # take one record from data set
Теперь давайте возьмем тестовую запись и сделаем оценку, используя модель, которую мы создали для этой записи.
питон
xxxxxxxxxx
1
test_rec = data_test.iloc[1:2,1:14]
2
testid = data_test.iloc[1:2,0:1] # get test record id for updating result in ADW (database)
3
id_final = int(test_id["ID"])
4
#predict value using model
7
res = regr.predict(test_rec)
8
pred_medv = res[0]
Теперь давайте обновим значение MEDV оценочной записи в базе данных.
питон
xxxxxxxxxx
1
#update database record on ADW
2
query = 'update boston_housing_test set medv =:result where id=:testrecid'
3
cur = con.cursor()
4
cur.execute(query,[pred_medv,id_final])
5
con.commit()
6
con.close()
Да, как мы видели, мы извлекли данные из базы данных Cloud с помощью Python, а затем использовали их для обучения модели, которую мы создали с помощью sklearn, и протестировали ее с новым значением.
Дальнейшее чтение
Проектирование базы данных с поддержкой хранилищ данных
Автономная база данных: создание автономного экземпляра хранилища данных