2-я неделя курса «Глубокое обучение от нуля до GAN с PyTorch» — дополнительная задача
Вот ссылка на отправку задания на расширение
Бонусная часть работы со вторым заданием заключалась в том, чтобы увидеть, можете ли вы применить ту же методологию к набору данных по вашему выбору.
Я нашел набор данных прогнозирования кредита на Kaggle — здесь. Было сложно загрузить его прямо из Kaggle, поэтому я загрузил файл csv на свой github.
Первая проблема, с которой я столкнулся, заключалась в том, что некоторые данные оставались пустыми в наборе данных; позже это вызвало ошибки, предупредив меня, что я пытался добавить числа с NaN (не число). Поэтому, чтобы удалить строки с пустым слотом, я использовал строку кода ниже:
dataframe.copy(deep=True).dropna()
Следующая проблема, с которой столкнулись, связана со стандартизацией и нормализацией данных.
Глядя на этот фрагмент набора данных, мы видим, что ApplicationIncome исчисляется тысячами, тогда как кредитная история — однозначное число.
На самом деле кредитная история играет важную роль в определении суммы кредита, который может быть предоставлен. Но, судя по набору данных, вес, придаваемый ему, не будет таким большим, как должен.
Вот почему иногда требуется нормализация или стандартизация набора данных.
Хорошо, теперь — какая, черт возьми, разница?
Прочитав об этом — здесь, как я это понимаю:
Нормализация — это когда набор данных масштабируется от 0 до 1 по следующей формуле:
Стандартизация — это когда набор данных масштабируется с использованием среднего значения и стандартного отклонения данных. Это делается по следующей формуле:
Так какой из них лучше?
Честно говоря, это очень зависит от вашего набора данных.
С тем, который я выбрал, я пошел со стандартизацией. В приведенном ниже коде показано, как я это сделал:
inputs_array = dataframe.drop(['Loan_ID', 'LoanAmount' ], axis=1) mean = inputs_array.mean() dev = inputs_array.std() inputs_array = (inputs_array - mean)/dev
Потеря проверки, с которой я закончил, составила 31,1528, что не очень хорошо для реальных жизненных ситуаций.
Но до того, как я стандартизировал свой набор данных, val_loss исчислялся триллионами. Итак, я горжусь. Я доволен этим как начинающий студент глубокого обучения.
Идя дальше, мы использовали его, чтобы делать прогнозы с учетом необученного набора входных данных.
Из приведенного выше фрагмента вы можете видеть, что прогноз совсем не за горами!
Это подводит нас к концу. Я более подробно рассказываю о каждой функции, представленной в другом моем блоге — здесь.
Если у вас, ребята, есть какие-либо вопросы или вам нужна дополнительная ясность по некоторым частям, оставьте их ниже :)