Привет всем!
Надеюсь, вы все в безопасности.
В продолжение моего предыдущего блога конкурса Истории разработчиков MSP, организованного сообществом партнеров Microsoft для студентов, исключительно для региона Индия , этот блог посвящен теме Модельное обучение с использованием машинного обучения в записных книжках Azure.

Итак, давайте начнем с того, как мы обычно обучаем модель с помощью Python:

1. Сначала загрузите набор данных. Я использую самый популярный набор данных, который используют новички: Набор данных Iris.

from sklearn.datasets import load_iris 
iris = load_iris()

2. Затем мы загружаем данные и желаемые результаты. Например, детали цветка - это данные, а название цветка, которое он даст, - это цель.

X = iris.data
y = iris.target

3. Теперь разделите данные на две части: обучающую и тестовую. Обучение используется для обучения нашей модели, а тест используется для проверки правильности обучения модели.

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.4, random_state=1)

4. Теперь нам нужно импортировать модель и обучить ее.

from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(X_train, y_train)

5. Давайте спрогнозируем некоторые данные, используя нашу модель, используя тестовые данные, и сравним, насколько точны фактические результаты по сравнению с прогнозируемыми.

y_pred = knn.predict(X_test)
from sklearn import metrics 
print(“kNN model accuracy:”, metrics.accuracy_score(y_test, y_pred))

Ого! точность 0,98 - это здорово.

Теперь я собираюсь применить эти знания о модельном тренинге в моем предыдущем проекте, основанном на случаях Covid-19 в Италии. Я бы посоветовал вам предварительно загрузить набор данных и также переименовать столбцы, используя шаги, упомянутые в моем предыдущем блоге.

  1. Итак, сначала импортируем модель. Я использую здесь модель ARIMA, так как мои данные, которые я должен тренировать, меняются со временем, а модель ARIMA хорошо подходит для данных типа временные ряды.
from statsmodels.tsa.arima_model import ARIMA

2. Загрузите фрейм данных со столбцом, прогноз которого мы хотим сделать. Я хочу предсказать общее количество положительных случаев коронавируса в ближайшее время. Так что загрузите фрейм данных с этим столбцом.

df=df[[‘Total amount of positive cases’]]

3. Теперь обучите модель и проверьте сводку.

model=ARIMA(df,order=(1,1,1))
model_fit=model.fit(disp=0)
print(model_fit.summary())

4. Что !! не все ли вы думаете, что ошибка (std err) слишком велика? Я изучил эту проблему подробнее и обнаружил, что, возможно, мой набор данных временных рядов не является стационарным. Поэтому я провел несколько базовых тестов, чтобы проверить, являются ли мои данные стационарными или нет.

from numpy import log
x=df.values
split=round(len(x)/2)
x1,x2=x[0:split],x[split:]
mean1,mean2=x1.mean(),x2.mean()
var1,var2=x1.var(),x2.var()
print(“mean1=%f, mean2=%f”%(mean1,mean2))
print(“variance1=%f,variance2=%f”%(var1,var2))

5. разница в отклонениях явно указывает на то, что мои данные вообще не являются стационарными. Я также построил гистограмму для проверки, и результаты показали очевидные нестационарные данные.

df.hist()

СОВЕТ: Вы также можете выполнить тест ADF, чтобы проверить, является ли временной ряд стационарным или нет.

6. Теперь, зная, что мои данные не являются стационарными, мне нужно преобразовать их в стационарные ряды. Логарифмическое преобразование можно использовать для сглаживания экспоненциального изменения обратно к линейной зависимости.

dfl=log(df)
dfl.hist()
dfl.plot()

x=dfl.values #log values
split=round(len(x)/2)
x1,x2=x[0:split],x[split:]
mean1,mean2=x1.mean(),x2.mean()
var1,var2=x1.var(),x2.var()
print(“mean1=%f, mean2=%f”%(mean1,mean2))
print(“variance1=%f,variance2=%f”%(var1,var2))

7. Ооо !! даже журнал не мог преобразовать его в стационарный ряд. Давайте реализуем самый проверенный метод преобразования нестационарных рядов в стационарные, т. Е. разностные. Вы можете реализовать явно, определив функцию, или вы также можете использовать встроенные методы.

(I) Ясно:

from pandas import Series
def difference(dataset, interval=1):
 diff = list()
 for i in range(interval, len(dataset)):
 value = dataset[i] — dataset[i — interval]
 diff.append(value)
 return Series(diff)
diff = difference(df.values)
from matplotlib import pyplot
pyplot.plot(diff)
pyplot.show()

(ii) Встроенный метод:

diff = df.diff()
pyplot.plot(diff)
pyplot.show()

8. Ооо! Мне все еще не удается преобразовать нестационарные данные в стационарные данные с помощью разности. Хорошо, я собираюсь провести еще пару раз дифференцирования с помощью встроенного метода. Я проводил дифференцирование еще 3 раза.

9. Разрежьте переменную diff до 4 раз, потому что при каждом различии первое значение преобразуется в NaN.

diff=diff[4:]

10. Давайте обучим нашу модель еще раз и посмотрим, что произойдет на этот раз ...

model=ARIMA(diff,order=(1,1,1))
model_fit=model.fit(disp=0)
print(model_fit.summary())

Тем не менее, в результатах наблюдается высокая погрешность !!
Что означают эти ошибки?

Что COVID невозможно предсказать?
Что все прогнозы, которые вы слышите, ложны?
Что нет уверенности в том, что этот вирус закончится?
Нет уверенности в его пиковой точке?
Нет уверенности в отношении периода блокировки ?

Я собираюсь оставить вас с этими вопросами до моего следующего блога. Тем временем мы оба постараемся найти ответ на эти вопросы.

А пока оставайтесь дома в безопасности.