Показ дописів із міткою Machine learning. Показати всі дописи
Показ дописів із міткою Machine learning. Показати всі дописи

вівторок, 28 квітня 2020 р.

Як зберегти dataframe у csv файл (python)

save, dataframe, python, csv, зберегти, сохранить
CSV (від англ. comma-separated values 'значення, розділені комою', іноді character-separated values 'значення, розділені символом') — файловий формат для представлення табличних даних, у якому поля відокремлюються символом коми (або крапкою з комою) та переходу на новий рядок. Поля, що містять коми, декілька рядків, або лапки (позначаються подвійними лапками), мають обмежуватися з обох боків лапками. CSV формат простий та зручний для програмної обробки, тому його часто використовують для збереження різноманітнийх табличних даних з метою подальшої обробки їх різноманітними програмами. Практично усі сучасні мови, які займаються обробкою даних, мають зручні функції для читання даних у даному форматі.

Для збереження DataFrame у csv файл у Python використовується метод(функція) to_csv() класу pandas.DataFrame. Наприклад так:
import pandas as pd
df=pd.DataFrame({"Years": [1990, 1991, 1992, 1993, 1994, 1995, 1997],
    "Price1": [1, 5, 6, 10, 8, 9, 2],
    "Price2": [5, 6, 7, 8, 9, 15, 12],
    })
df.to_csv(r"C:\data\report_df.csv", index=False, sep=";")
r спереду адресу означає, що не потрібно враховувати службові символи у рядку шляху. Без r у windows шлях прийшлось би писати через дві косі риски, так:
df.to_csv("C:\\data\\report_df2.csv", index=False, sep=";")
Найбільш корисні аргументи методу to_csv наведено в таблиці.

Сценарій
Аргумент
Приклад
Змінити розділювач по замовчуванню
sep
df.to_csv(…, sep=';')
Записати без індексів
index
df.to_csv(…, index=False)
Записати без заголовків
header
df.to_csv(…, header=False)
Записати підмножину стовпчиків
columns
df.to_csv(…, columns=['x', 'y'])
Кодування формату файлу
encoding
df.to_csv(…, encodings='utf-8')
Стиснути   CSV
compression
df.to_csv(…, compression='gzip')
Задати формат часу
date_format
df.to_csv(…, date_format='%d/%m%Y')
Зберегти NaNs as "N/A"
na_rep
df.to_csv(…, na_rep='N/A')

четвер, 23 квітня 2020 р.

Multiple Subplots (python)

Будувати множинні графіки в python можна різними способами. При побудові графіків з використанням бібліотеки Matplotlib існує два стилі, які часто комбінуються. Один це стиль matlab, який реалізовується за допомогою функцій у модулі pyplot. Інший стиль - це об'єктно- орієнтований стиль, який мені особисто більше подобається (мабуть Java дається взнаки). В об'єктно орієнтованому стилі ви маєте фігуру - що представляє собою весь графік і підграфіки(subplots), що предсталяються об'єктами Axes. Взявши потрібний об'єкт Axes ми отримуємо можливість маніпулювати нашим підграфіком.

Один із способів це зробити використати метод(функцію) sublots():
#будуємо графік 2х2 (4 підграфіки)
fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2)
Можна також так:
fig, axs = plt.subplots(2, 2, sharex=True, sharey=True)
axs[0, 0].plot(x) # працюємо з координатами підграфіків
sharex=True, sharey=True - означає, що у нас будуть для всіх графіків спільні осі Х та Y. Якщо хочемо для кожного графіка свої осі, то не задаємо ці параметри.

Таким чином можемо побудувати наші графіки:

четвер, 16 квітня 2020 р.

Як побудувати графік по стовпцям pandas dataframe (python)

Для виводу використовуємо бібліотеку matplotlib.

Наступний приклад демонструє створення dataframe та виводу його стовпців на лінійному графіку. Показано як додати назву графіку, підписи осей, сітку, задати вигляд підпису осі Х.
import pandas as pd;
import matplotlib.pyplot as plt;
df=pd.DataFrame({"Years": [1990, 1991, 1992, 1993, 1994, 1995, 1997],
    "Price1": [1, 5, 6, 10, 8, 9, 2],
    "Price2": [5, 6, 7, 8, 9, 15, 12],
    })
print (type(df))
ax = df.plot(x="Years", y="Price1", kind="line", label="Ціна1", marker="*")
df.plot(x="Years", y="Price2", ax=ax, color="C2", label="Ціна2", marker=".")
ax.set_title('Ціни по роках') # назва діаграми
ax.legend(loc='upper left') # встановити де знаходитиметься легенда
ax.set_ylabel('Ціна') # підпис осі y
ax.set_xlabel('Роки') # підпис осі x
ax.grid() # додати сітку на діаграму
#plt.xticks(rotation='vertical') # вивести написи на осі Х вертикально або
ax.tick_params(axis='x', rotation=45) # виводимо написи на осі X з поворотом на 45 градусів
plt.show()
Результат:
Matplotlib plot pandas dataframe
Результат побудови по стовпцях dataframe
Додатково:
* Візуалізація з Matplotlib (Python Data Science Handbook)
* Matplotlib.markers
* Pandas Dataframe: Plot Examples with Matplotlib and Pyplot

суботу, 3 листопада 2018 р.

Нейронні мережі в R

Із CRAN можна звантажити декілька пакетів реалізацій нейронних мереж на R (nnet, neuralnet, deepnet), крім них доступні пакети в основі яких лежать реалізації на інших мовах. Це такі пакети як MXnet, darch, deepnet, h2o, Keras, TensorFlow.
Простий приклад використання neuralnet:

library("neuralnet")
input<-c(0,1,2,3,4,5,6,7,8,9,10)
output<-c(0,1,4,9,16,25,36,49,64,81,100)
mydata<-cbind.data.frame(input,output)
attach(mydata)
#навчити мережу базуючись на input та output
model=neuralnet(
  formula=output~input,
  data=mydata, #дані
  hidden=10, #кількість нейронів в прихованому шарі
  threshold=0.01 #поріг спрацювання
)
print(model)
#виводимо схему нейронної мережі
plot(model)
#Перевіряємо дані - фактичні та прогнозовані
final_output=cbind(input, output, as.data.frame(model$net.result))
colnames(final_output)=c("Input", "Expected Output", "Neural Net Output")
print (final_output)

Схема виведеної нейронної мережі: