Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Регистрируясь, я даю согласие на обработку данных и условия почтовых рассылок.
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр Обычные девчонки Алиса и Вика отправились на поиски друга, который перестал выходить на связь, и угодили в безумный водоворот странных событий на затерянном острове. Им очень нужна ваша помощь! Играйте три-в-ряд и выполняйте задания. Удачи!

ВегаМикс 2

Казуальные, Три в ряд, Головоломки

Играть

Топ прошлой недели

  • solenakrivetka solenakrivetka 7 постов
  • Animalrescueed Animalrescueed 53 поста
  • ia.panorama ia.panorama 12 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая «Подписаться», я даю согласие на обработку данных и условия почтовых рассылок.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
0 просмотренных постов скрыто
18
DELETED
Искусственный интеллект

Как начать создавать искусственный интеллект если вы юрист/рыболов/трубочист или у вас лапки. Часть III.⁠⁠

7 лет назад

Первая, вторая часть

Абсолютно всем добрый день, сегодня мы будем играться с модельками и че-нибудь еще. Запасайтесь чайком либо клавиатурой, и мы начинаем!


В прошлом посту мы остановились на самом интересном месте. Мы обучили модельку:

Тут есть сурьезный трабл. Если мы будем проверять на одних и тех же данных, то будет не очень хорошая проверка (ну а что если в обуч. выборке у нас одни нолики, а в тестовой - единички?). Так давайте сделаем кросс-валидацию, о которой все так твердят.

Тэк блэт что тут произошло нафиг?

Мы создали модельку в 3 строке, а в 4 самое интересное. Мы просто передаем функции нашу модельку (необученную) и данные. Я еще поставил cv=10, что означает произвести 10 проверок.

Уже более честный результат! Едем дальше. Как видите, я изменил параметр n_estimators на 150. Этот параметр отвечает за количество деревьев.


Так, ну давайте линейную регрессию? "Неа, не давайте", - скажете вы и будете правы: кто ж классификацию делает линейкой? Погнали с логистикой!

Так, на этот раз нам дали только 0.8

Теперь почему бы не зарешать методом ближайших соседей?

Нда... Ну и черт с ним!

Мы поступим по-другому. Давайте объединим мнения всех трех моделей, ведь если каждая работает с такой эффективностью - то вместе будут работать с большей!

Здесь без кросс-валидола зато с ансамблем, написанным на коленке :))). Итак, что мы сделали: просто взяли обученные модельки (rfc, lr, knn - я переименовал model во всех трех случаях) и при каждом решении смотрели: если двеы или более проголосовали за 1, то ответ 1, если 1 или 0: ответ 0.


Ну что ж, попробуем залить на каггл. Для этого еще чуть-чуть попишем код.

Не очень красивый код, но я ds и мне как-то пофигу :).

Кстати на второй строке мы заменяем NaN в столбе Fare. А все почему? Потому что не заметили их при обработке! Кто ж знал...


Ладно, проехали. Самое интересное вот прям щас. Гоним на kaggle!

Ну и make submission. Смотрим, что вышло :).

Поздравляю, если вы дошли до сюда, то вы уже получили 76% точности на финальной выборке и свое почетное 7000+- место :))). Теперь играйтесь с модельками, с их параметрами (о коих буду по-тихоньку рассказывать) и так далее. Обработайте по-другому данные. В общем, творчества тут много.


Спасибо всем за прочтение, заинтересовавшихся приглашаю в сообщягу. Ну и ссылочка на кот.


На этот раз по мнению бм в посту Гитлер...

Показать полностью 8
[моё] Машинное обучение Tutorial by WBG Длиннопост
29
16
DELETED
Искусственный интеллект

Как начать создавать искусственный интеллект если вы юрист/рыболов/трубочист или у вас лапки. Часть II.⁠⁠

7 лет назад

Итак, с вами WBG и мы начинаем вторую часть создания ИИ. К великому сожалению, вам нужно хоть немножко знать питон, например из первой части или какого-нибудь туториала с ютубчика :). Есть и второй вариант: берите чаек, усаживайтесь поудобнее и просто наслаждайтесь.


Знакомы с python? Тогда погнали!


- Как пройти в библиотеку?

- А вам в какую?

- В sklearn

- Тогда вставьте в cmd

pip install numpy
pip install pandas
pip install sklearn

И если у вас все сработало - мои поздравления! Иначе - возможно, у вас нету pip в PATH. Если что - путь в комменты, задаем любые вопросы.


Я хотел рассказать про работу numpy и pandas, но вы меня разорвете - поэтому сразу переходим к интересному, уверен, вы поймете все и так :))).


Итак, как я и обещал - мы делаем реальную задачу, для этого регаемся на kaggle.com, находим соревнование. Да, соревнование, и не какое-нибудь, а предсказание выживания человека на титанике по различным данным. Еще раз: ПРЕДСКАЗАНИЕ, ВЫЖИВЕТ ЛИ ЧЕЛОВЕК. Отличная первая задача. Скачиваем данные в папку C:\ml_prj\WBG\titanic, предварительно создав ее :). Распаковываем в эту папку.

А вот как это выглядит в папке

Что необходимо сделать, так это поставить anaconda, обязательно в конце установки жмакнув "Add to PATH". Затем в cmd запустить команду

C:
cd C:\ml_prj
jupyter notebook

Чуть-чуть подождать, и у вас в браузере откроется вот такая штука.

Как дела? Все получается? Если нет, то не стоит паниковать, зато задать вопрос в комментах - почему бы и нет?!


Теперь быстренько летим в папку WBG\titanic и создаем New->Python3 как показано выше.

Искренне надеюсь, что у вас также. Теперь самое интересное! Быстренько делаем для кого понятные, а для кого непонятные заклинания:

И жмем Ctrl+Enter, чтобы запустить ячейку кода.

(Весь код я приложу в конце)


Так, что произошло? Мы загрузили три библиотеки - numpy, отвечающий за создание массивов и тензоров. Pandas - удобно работающий с текстовыми и файловыми данными, таблицами. Sklearn - библиотека, предоставляющая алгоритмы машинного обучения.


Ну что, давайте я не буду погружать никого не во что? Сразу к интересному? Тогда берем попкорн, клавиатуру и погнали.

Тыкаем клавишу B (английская, блэт, ибо Below - ниже). Создается ячейка, заходим в нее и пишем такое:

Ну и запускаем (напомню, ctrl+enter).

Здорово, мы загрузили данные в переменные. Правда, ничего не понятно - что за данные такие. Давайте взглянем на них!

Мы вставили следующей ячейкой код, который возвращает верхнюю часть наших данных. Как видим, здесь несколько столбцов:

PassengerId - таки Id пассажира

Survived - выжил он (1) или нет (0)

Sex - male (мужчины), female (отгадайте, кто)

Age - возраст

и так далее, в общем по-хорошему надо изучить, но у нас же форсированный курс 8).


Что мы собираемся делать дальше, так это обработать данные (feature engineering нахрен). Во как. Поэтому объединим наши данные, вставив это сразу после последней ячейки:

"красненького" бояться нафиг не надо, это просто предупреждения.

Ну давайте взглянем на наши данные

А давайте-ка к херам снесем колонку Name, с которой хрен че сделаешь: вряд ли от имени что-нибудь зависит. Да и cabin можно удалить. И PassengerId. Едем:

Парочку замечаний:

1) axis = 1 означает, что мы удаляем стоблец

2) data_1 - это не костыль, это нужно, чтобы мы понимали, сколько обработок мы сделали. Можно конечно и

data = data.drop(...

Но тогда эту ячейку нельзя будет вызвать еще раз, так как данные перезаписаны.


Отлично, как мы видим, столбцы удалены. Но нам этого мало: хотелось бы теперь пол преобразовать в числа, 1 либо 0. Извините, фемки, но у нас по-любому будут разные цифры для разных полов. Пусть будет... 1 для мужчин и 0 для женщин (ну все, улетел в минуса).

"Какой кошмар" - подумали вы. Но давайте по порядку.

1) data_1["Sex"] - означает, что мы работаем с колонкой "пол".

2) data_1["Sex"].apply - означает, что мы хотим применить функцию для каждого элемента в столбце

3) lambda x: - это конструктор функции, например если обычно мы делаем

То с лямбдой мы можем сделать

Или даже сразу

Таким образом, когда мы делаем apply, pandas пробегается по всем элементам данного столбца и заменяет каждый его элемент на вашу функцию от этого элемента.

Если не поняли - ничего страшного, ПОЙМЕТЕ, НИКУДА НЕ ДЕНЕТЕСЬ УХАХАХА.


Ладно, с полом разобрались. Кстати, уже красивые данные, не правда ли? Не правда!

Если присмотреться, то можно увидеть ЭТО

Что это за ПрострелитьСебеКолено.jpg? Это Not a Number, то есть неопределенно. И знаете, что я думаю по этому поводу? Я считаю, что от этой херни надо избавляться словно от трапов. И мы быстренько это сделаем:

Здорово, правда? Добавились непонятные нули, ну и шут с ним. Зато №5 успешно был заменен на среднее арифметическое столбца, ведь именно это означает data_1["Age"].mean(). А fillna заменяет NaN на то, что предложено в скобках.


Так, теперь подумаем, что делать с Ticker. О! А давайте возьмем первый символ от строки? Ну, я не против, че

Каеф. Теперь все почти ништяк. Осталось придумать, что делать с буковами.

Тут есть одна сверхсекретная тактика, только тссс: one hot encoding. Давайте на нее посмотрим, и вы сами все поймете!

1) Что изменилось?

Мы заменили Embarked, который мог быть одной из трех букв (C, Q, S) на три столбца: em_C, em_Q, em_S. Затем для каждого элемента мы ставим во всех трех столбцах 0, а в том, который соответствует - единичку. То есть Например 0-ой элемент: 0 0 1 в столбцах, значит там была буква S. Во втором элементе единица в столбце em_C, значит там буква C.


2) Что за магия?

Предпоследняя строка удаляет столбец, первая - делает копию data_1. А в остальное - забейте вникать :). Хотя это не очень сложно, но думаю со временем это станет очевидно, а стелить простыню ради этого - такое :)).


Так ладно, отвлеклись. Давайте то же самое по-быстрому сделаем еще для Pclass и Ticket.

Тут стоило бы оформить в функцию. Но мы делаем понятный код, ок да?


Фух. Почти все готово. Единственное, что осталось - это разбить обратно на тестовую и обучательную, а обучательную - на train и val. Ща все объясню.


Когда мы начнем обучать модельку, нам, конечно, захочется проверить, насколько хорошо она обучилась. Но будет нечестно тестить на тех же данных, на которых мы обучали. Поэтому нам из выборки для обучения нужно вырезать немножко данных - для проверки. Валидация.

Так, тут значит мы разрезали нашу data обратно: на train и test.

Тут значит разбиваем на вход (X) и выход (y). То есть мы будем учить для X предсказывать y.

Вот и все. Теперь в X_train и y_train основная часть выборки. Осталось на этом обучить и протестить на X_test и y_test.


УРААААА ОБУЧЕЕЕЕНИЕЕЕ. Поздравляю, если вы не умерли до этого момента. А обучать мы будем (для начала) решающие деревья.

Едем!

Все, мы обучили. Да да. Уже обучили. Нет, серьезно. Без подвохов. Мы реально обучили простую модельку. Ну давайте протестим ее на данных из выборки и на тестовых данных!

То есть на проверочной (валидационной, validation) выборке мы получили 83% точности, когда на тестовой аж 97%. Поздравляю, вы обучили первую свою модель. =))


К сожалению, пикабу пишет "максимально можно добавить 51 блок", и я дошел до лимита. Честно. Так что...


Спасибо всем прочитавшим, а также по два спасибо подписчикам, как моим, так и соответствующего сообщества по этой тематике. Как вы уже догадались, будет третья часть, где уже широко развернемся с модельками. Там мы попробуем еще логистическую регрессию, метод ближайших соседей и что-нибудь еще (идеи можно присылать в комменты). А главное, мы в следующей части сможем отправить наше первое решение на kaggle, заняв какое-нибудь место.


Здесь вы найдете мой код, который был в презентации. Да и вообще всю папку. Жалко для вас что ли?


На этот раз бм сисек в посту не нашел.

Показать полностью 25
[моё] Tutorial by WBG Python Kaggle Длиннопост
33
57
DELETED
Искусственный интеллект

Как начать создавать искусственный интеллект если вы юрист/рыболов/трубочист или у вас лапки. Часть I.⁠⁠

7 лет назад

Крутой заголовок, да? На самом деле, дальше будет еще круче. Итак, на линии WBG и мы начинаем!


Теория? К херам теорию, это вы сами легко почитайте. Давайте сразу к делу!


Начало


Что же нам потребуется для самого начала? Поставить чертов питон! Теперь создайте файл с notepad++, заканчивающийся на ".py" (это чертовы американские буковы). Ну и все, открываем его с np++.

Ну давайте чуть-чуть научимся программировать на питоне, а те, кто уже умеют, для вас дорога в следующий пост, в котором будет рассказано про создание уже ИИ. Вероятность того, что будет - зависит от отзывчивости пользователей!


Итак, давайте разберемся, что к чему. В питоне, как и в большинстве языков программирования, есть циклы, условия, функции и прочая ерунда. Давайте создадим "Hello, world":

print("Hello, cruel world!")
input()

Теперь запускаем python-файл, который мы создали.

И находите здесь python (если не нашли - то жмакайте Найти другое приложение на этом компе и ищите там python).


Так, дошли до этого этапа?

Хер знает, зачем вам этот скриншот, но пусть будет.

Так, нам вывело приветствие. А наше чсв взлетело до небес, но надо двигаться дальше!


-----------------------ЦИКЛ-----------------------

Сделаем по-быстрому цикл.

for i in range(100):
print("We don't repeat double times")
input()

Заметьте, перед принтом у нас стоит 4 пробела.

Итак, запустим код:

О БОЖЕ оно работает. У меня. Если у вас не так - срочно пишите в комментариях!

Отлично, едем дальше.


Значит, for i in range(x) означает, что мы произведем операцию x раз, при этом i будет в первой итерации равно 0, во второй 1, в третьей 2 и так далее. В последней i примет значение x-1.


Не верите? Выведем i!

Для этого будет такой кот:

for i in range(100):
print(i)
input()

Если у вас заработало, то вы - отборный красавчик. Иначе срочно в комменты.


-----------------------УСЛОВИЕ-----------------------

Можно много говорить, но у нас нету на это времени. Мы будем много делать.

for i in range(100):
if i == 5 or i == 3:
print("О, кажется мы нашли i, равное 5, либо i, равное 3. i =", i)
input()

P. S. перед if 4 пробела, а вот перед print уже 8

В цикле у нас i проходит все целые значения от 0 до 100, а потому в какой-то момент i станет равным 3, а затем и 5. У нас написано if i == 3 or i == 5 что означает, что print выполнится если i равно 3 либо i равно 5 (порядок условий тут не важен). Если заменить or на and, то условие будет выполняться тогда, когда i равно сразу и 3 и 5. То есть ни-ко-гда. Такие дела.


-----------------------ЗНАЧКИ-----------------------

Помимо арифметических операций (* / + -), у нас есть встроенная степень (**), остаток от деления (%) и частное от деления (//). Смотрим примеры:

print("7 + 2 =", 7 + 2)
print("7 * 2 =", 7 * 2)
print("7 - 2 =", 7 - 2)
print("7 / 2 =", 7 / 2)
print("7 ** 2 =", 7 ** 2)
print("7 % 2 =", 7 % 2)
print("7 // 2 =", 7 // 2)
input()

Как видите, оно работает. Здорово, не правда ли?


-----------------------input()-----------------------


Я зачем-то использовал эту штуку в конце каждого кода. На самом деле, эта функция делает ввод с клавиатуры. Погнали сразу примеры:

a = input()
print(a)
input()

То есть в переменную a мы положили ту строчку, которую ввели до Enter. А после этого сразу ее вывели. О как!

А как вам такое:

a = input()
a = int(a)
print(a ** 2)
input()

Так, какого хрена здесь происходит, спросите вы. Мы ввели строку в переменную a. Затем мы преобразовали ее в числовой тип. А затем возвели в квадрат и вывели.


-----------------------СПИСОК-----------------------


Объяснять? Да сами поймете :), давайте-ка сразу примеры.

a = [1, 2, 3, 5, 8, 13]
print(a[0])
print(a[4])
print(a[5] * a[2])
input()

Итак, что мы делаем? Мы создали список из 6 элементов, сами элементы наверное вы увидели. Теперь выводим нулевой элемент (это единичка. Нумерация идет с 0), 4-й элемент (для юристов - это пятый элемент :) ), а затем 5-ий умножаем на 2-ой, то есть 13 * 3.


Появились вопросы? Что-то непонятно? Срочно в комменты!


-----------------------ИТЕРАЦИИ ПО СПИСКАМ-----------------------


Ужас как сложно звучит, да? Правильно, нет! Едем!

a = [1, 2, 3, 5, 8, 13]
for el in a:
print(el)
input()

"ЧЕГО????" - уже слышу я ваш крик, даже не дождавшись опубликования этого поста. Так, успокоились?


Когда мы делали цикл, мы делали for i in range(), но теперь мы заменили range на список, и теперь i (неважно как назвать эту переменную. i, el, ПРЕВЕДМЕДВЕД - это все допустимые переменные) принимает значения ЭЛЕМЕНТОВ гребанного списка!


-----------------------ААА СЛОВАРИ-----------------------


Если очень коротко - то это те же списки, только обращаемся мы к элементам не по номерам, а по ключам. Короче пофиг, чекаем примеры:

зарплата = {"программиста": 300, "дата саентиста": 550, "хахалевой": 10000}
print(зарплата["программиста"])
input()

Итак, ключами у нас являются строки "программиста", "дата саентиста" и "хахалевой", а значениями - 300, 550 и 10000. Во второй строке мы обратились к элементу словаря "программиста" и получили ответ - 300. Все правильно.


-----------------------ИТЕРАЦИИ ПО СЛОВАРЯМ ЗАБЕРИТЕ МЕНЯ С ЭТОЙ ПЛАНЕТЫ-----------------------


Хотя сложного тут нету :).

зарплата = {"программиста": 300, "дата саентиста": 550, "хахалевой": 10000}
for кого in зарплата:
print("зарплата", кого, "равняется", зарплата[кого])
input()

Итак, итерируясь по словарю наша цикличная (не, цикловая (бред, переменная цикла)) принимает значения ключей словаря, в нашем случае это три строки "программиста" ну и т. д. А вот дальше мы обращаемся к словарю. Здорово, правда?


Фуууух, ну пока хватит. Давайте попрактикуемся.


-----------------------ПРАКТИКА-----------------------

I)

зарплата = {"программиста": 300, "дата саентиста": 550, "хахалевой": 10000}

for кого in зарплата:
if зарплата[кого] < зарплата["дата саентиста"]:
print("ds имеет зарплату выше зп", кого)
elif зарплата[кого] > зарплата["дата саентиста"]:
print("ds имеет зарплату ниже зп", кого)
else:
print("ds имеет зарплату равную зп", кого)
input()

II)

ls = [1, 4, 2]
print(ls[2])
ls[2] = 3
print(ls[2])
input()

III)

kindergarden = {
"Группа А": ["ltomme", "FoxWithoutAName", "Жень"],
"Группа Б": ["SupportCommunity", "WhiteBlackGoose", "moderator"],
"Группа В": ["L4ever", "admin", "mainka"],
}
for groupname in kindergarden:
print("В группе " + groupname + ":")
for user in kindergarden[groupname]:
print(" " + user)
input()

Все, это конец первой части. Поздравляю всех, кто дочитал, особенно поздравляю тех, кто что-нибудь понял. Обязательно пинайте меня в мои ошибки, задавайте любые вопросы, подписывайтесь на анал и так далее.


Спасибо за прочтение!

P. S. Во второй части будет создание ИИ, причем на реальной задаче.

Показать полностью 15
[моё] Python Начало Tutorial by WBG Гифка Длиннопост
46
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии