1678203300
В этом блоге мы расскажем о ключевых проблемах, связанных с точностью классификации, таких как несбалансированные классы, переоснащение и смещение данных, а также о проверенных способах успешного решения этих проблем.
Несбалансированные классы
Точность может быть обманчивой, если набор данных содержит неравномерные классификации. Например, модель, которая просто предсказывает мажоритарный класс, будет точной на 99 %, если доминирующий класс включает 99 % данных. К сожалению, он не сможет должным образом классифицировать класс меньшинства. Для решения этой проблемы следует использовать другие показатели, включая точность, отзыв и оценку F1.
5 наиболее распространенных методов, которые можно использовать для решения проблемы несбалансированного класса точности классификации:
Несбалансированный класс | Инженерия знаний
Переоснащение
Когда модель переобучается на обучающих данных и плохо работает на тестовых данных, говорят, что она переобучена. В результате точность может быть высокой на тренировочном наборе, но плохой на тестовом. Для решения этой проблемы следует применять такие методы, как перекрестная проверка и регуляризация .
Переоснащение | Фрипик
Существует несколько методов, которые можно использовать для устранения переобучения.
Предвзятые данные
Модель будет давать смещенные прогнозы, если набор обучающих данных смещен. Это может привести к высокой точности на обучающих данных, но производительность на необученных данных может быть ниже среднего. Для решения этой проблемы следует использовать такие методы, как увеличение данных и повторная выборка. Некоторые другие способы решения этой проблемы перечислены ниже:
Предвзятость данных | Эксплориум
Матрица путаницы
Изображение автора
Производительность алгоритма классификации описывается с помощью матрицы путаницы. Это макет таблицы, в котором реальные значения сопоставляются с ожидаемыми значениями в матрице, чтобы определить производительность алгоритма классификации. Некоторые способы решения этой проблемы:
Вклад точности классификации в машинное обучение
В заключение, точность классификации является полезным показателем для оценки производительности модели машинного обучения, но она может быть обманчивой. Чтобы получить более полное представление о производительности модели, следует также использовать дополнительные показатели, включая точность, полноту, оценку F1 и матрицу путаницы. Чтобы преодолеть такие проблемы, как несбалансированные классы, переоснащение и смещение данных, следует применять методы, включая перекрестную проверку, нормализацию, увеличение данных и повторную выборку.
Оригинальный источник статьи: https://www.kdnuggets.com/
#machinelearning #classification #accuracy #key #issues
1678203300
В этом блоге мы расскажем о ключевых проблемах, связанных с точностью классификации, таких как несбалансированные классы, переоснащение и смещение данных, а также о проверенных способах успешного решения этих проблем.
Несбалансированные классы
Точность может быть обманчивой, если набор данных содержит неравномерные классификации. Например, модель, которая просто предсказывает мажоритарный класс, будет точной на 99 %, если доминирующий класс включает 99 % данных. К сожалению, он не сможет должным образом классифицировать класс меньшинства. Для решения этой проблемы следует использовать другие показатели, включая точность, отзыв и оценку F1.
5 наиболее распространенных методов, которые можно использовать для решения проблемы несбалансированного класса точности классификации:
Несбалансированный класс | Инженерия знаний
Переоснащение
Когда модель переобучается на обучающих данных и плохо работает на тестовых данных, говорят, что она переобучена. В результате точность может быть высокой на тренировочном наборе, но плохой на тестовом. Для решения этой проблемы следует применять такие методы, как перекрестная проверка и регуляризация .
Переоснащение | Фрипик
Существует несколько методов, которые можно использовать для устранения переобучения.
Предвзятые данные
Модель будет давать смещенные прогнозы, если набор обучающих данных смещен. Это может привести к высокой точности на обучающих данных, но производительность на необученных данных может быть ниже среднего. Для решения этой проблемы следует использовать такие методы, как увеличение данных и повторная выборка. Некоторые другие способы решения этой проблемы перечислены ниже:
Предвзятость данных | Эксплориум
Матрица путаницы
Изображение автора
Производительность алгоритма классификации описывается с помощью матрицы путаницы. Это макет таблицы, в котором реальные значения сопоставляются с ожидаемыми значениями в матрице, чтобы определить производительность алгоритма классификации. Некоторые способы решения этой проблемы:
Вклад точности классификации в машинное обучение
В заключение, точность классификации является полезным показателем для оценки производительности модели машинного обучения, но она может быть обманчивой. Чтобы получить более полное представление о производительности модели, следует также использовать дополнительные показатели, включая точность, полноту, оценку F1 и матрицу путаницы. Чтобы преодолеть такие проблемы, как несбалансированные классы, переоснащение и смещение данных, следует применять методы, включая перекрестную проверку, нормализацию, увеличение данных и повторную выборку.
Оригинальный источник статьи: https://www.kdnuggets.com/
1657443540
В следующей статье мы рассмотрим Python, игнорирующий недопустимое распределение. Почему это происходит и как устранить это предупреждение. Это непонятная ошибка. Другими словами, вероятность встретить это предупреждение мала. Однако, поскольку вы здесь, это означает, что вы действительно столкнулись с этим. Не волнуйся. Эта статья подробно описывает это и попытается устранить эту ошибку.
Иногда, когда вы пытаетесь установить пакет, например, вы можете столкнуться с ошибкой, подобной этой.
Предупреждение: игнорирование недопустимого распределения
Это происходит потому, что когда pip обновляет или удаляет пакет, он переименовывает имя пакета, заменяя первую букву на «~» или «тильду», что является нормальным поведением. Проблема здесь в том, что pip переименовывает свой собственный пакет (pip -> ~ip) без его восстановления.
Всякий раз, когда выполняется обновление pip, пакет pip по умолчанию переименовывается в ~ip, а затем после удаления ~ip устанавливается новый пакет pip. Итак, если ваше обновление остановится между ними, оно оставит ~ ip как есть.
Этот сломанный пункт можно легко исправить или подавить. Но пока вы это не исправите, будет отображаться вышеуказанная ошибка.
Чтобы подавить все предупреждения, вы можете сделать следующее. Однако важно понимать, что подавление предупреждений не устраняет ошибку. Он просто скрывает предупреждающее сообщение.
pip --disable-pip-version-check install <module_name>
Это происходит из-за многовариантной установки библиотек. Иногда conda или pip не могли удалить версии. Вместо этого он переименовывает его в «~ip».
Поэтому рекомендуется найти пакеты сайтов в установке python (обычно расположенные в pythoninstallation/Lib/site-packages/), выполнить поиск «~ip» и удалить такие папки, которые начинаются с ~ip. После этого проблема с игнорированием недействительной раздачи будет решена, и вы больше не будете получать подобных предупреждений.
Игнорирование недопустимого распределения при установке библиотеки pip
после удаления ~<package_name>
установка pip прошла успешно, предупреждений не возникало
Anaconda — это менеджер пакетов с открытым исходным кодом, похожий на pip. Более того, шансы предупредить python об игнорировании недопустимого дистрибутива, появляющегося в анаконде, очень малы, поскольку они используют свой собственный исполняемый файл conda. Это обеспечивает стабильную и быструю установку с очень малой вероятностью появления ошибок. Если в вашей библиотеке сайта нет ~ip, нет причин для появления этого предупреждения.
Точно так же у pycharm есть специальный графический интерфейс для установки и удаления пакетов для проекта. Если пакет не работает должным образом, просто удалите его и переустановите. Поэтому маловероятно, что в pycharm произойдет игнорирование недопустимого распределения.
Используйте шаги, приведенные ниже, чтобы починить сломанный пункт.
python get-pip.py
. Это установит колесо и пип.Как принудительно переустановить PIP?
Чтобы принудительно переустановить пакет pip, вам нужно будет сделать, например, следующее:
pip install pandas –no-cache-dir
Почему мы не должны игнорировать Python, игнорируя предупреждения о недопустимом дистрибутиве?
Мы не должны игнорировать Python, игнорируя предупреждения о недопустимом дистрибутиве, потому что некоторые зависимые пакеты могут быть не установлены. Кроме того, это может привести к более нежелательным ошибкам.
В следующей статье мы обсудили, почему появляется предупреждение Python, т. е. игнорирование недопустимого распределения, и рассмотрели способ устранения предупреждающего сообщения. В современных IDE, таких как Pycharm и Anaconda, появление этой ошибки маловероятно, поскольку эти IDE имеют собственный процесс установки пакетов.
Источник: https://www.pythonpool.com
1669284600
В этом уроке мы узнаем, как выключить компьютер с помощью Python. Чтобы завершить работу вашей системы с помощью языка программирования Python, вы должны иметь некоторое представление о модуле ОС в Python. Он предустановлен в стандартной библиотеке Python, поэтому вам не нужно писать команду pip, чтобы установить его в вашей среде Python. От чтения или записи файла до выключения вашей системы с помощью Python модуль ОС можно использовать в любой задаче, которая зависит от операционной системы вашей системы.
import os
os.system('shutdown -s')
Чтобы выключить компьютер с помощью Python, обязательно сохраните и закройте все запущенные файлы. Теперь вот как выключить компьютер с помощью Python:
import os
shutdown = input("Do you wish to shutdown your computer ? (yes / no): ")
if shutdown == 'no':
exit()
else:
os.system("shutdown /s /t 1")
Вот программа Python, которая попросит пользователя выключить компьютер, предоставив вариант «Да» или «Нет». Кроме того, когда вы набираете «да» и затем нажимаете клавишу ENTER, система мгновенно выключается.
1656141743
YouTube — очень популярный сайт для обмена видео. Загрузка видео с YouTube — непростая задача. Загрузите загрузчик и получите видео, используя его, или перейдите на любой другой веб-сайт, который загружает видео и сохраняет его на вашем компьютере. Используя Python, эта задача очень проста. Несколько строк кода загрузят для вас видео с YouTube. Для этого существует библиотека Python с именем «pytube». pytube — это легкая библиотека Python без зависимостей, которая используется для загрузки видео из Интернета.
Откройте терминал и выполните следующую команду
pip install pytube3
Первый шаг — импортировать класс YouTube из pytube
модуля.
from pytube import YouTube
url = 'Your URL goes here'
my_video = YouTube(url)
Теперь получите URL-адрес, я сохраняю его в формате url
. Затем я вызываю YouTube
метод my_video
и передаю URL.
print(my_video.title)
Теперь давайте получим название видео YouTube, используя title
метод. Далее, давайте получим миниатюру изображения.
Чтобы получить миниатюру видео YouTube, мы будем использовать этот thumbnail_url
метод.
print(my_video.thumbnail_url)
Print
метод отобразит миниатюру видео YouTube.
Чтобы загрузить видео с YouTube, нам нужно установить stream resolution
первый.
my_video = my_video.streams.get_highest_resolution()
or
my_video = my_video.streams.first()
Вы можете выбрать первое разрешение потока или выбрать его вместе с разрешением потока.
Если вы хотите получить все разрешение потока для видео, а затем выбрать подходящее, вы можете использовать следующую команду.
for stream in my_video.streams:
print(stream)
Вы можете использовать функцию filter() для извлечения только определенных потоков. Это полезно, когда вы хотите загрузить видео с YouTube во всех разрешениях.
Двигаемся вперед, теперь давайте загрузим видео! Мы будем использовать этот download
метод для конкретного потока для загрузки видео с YouTube.
my_video.download()
Ваше видео YouTube будет загружено в ту же папку, где находится ваш скрипт Python.
1640766190
Узнайте, почему Go - отличный выбор для создания блокчейна, а также получите пошаговое руководство о том, как вы можете реализовать его самостоятельно.
Блокчейны являются базовой технологией для многих децентрализованных приложений и криптовалют. Они считаются одним из самых значительных открытий этого поколения. Несмотря на то, что блокчейн находится на начальной стадии, он уже применим во многих отраслях и создает новые рабочие места и возможности для разработчиков, художников, геймеров, авторов контента и многих других.
Это руководство направлено на то, чтобы научить вас, как работают блокчейны, и научит вас создавать их с нуля с помощью Go. Если вы слышали о блокчейнах, но все еще не знаете, как они работают, эта статья для вас.
Go предоставляет множество уникальных функций и возможностей, которые делают его подходящим для построения блокчейна. Например, Go позволяет без особых усилий создавать высокоэффективные и производительные приложения.
Go также отлично подходит для создания приложений, требующих параллелизма и параллелизма (например, блокчейнов), благодаря его способности создавать тысячи горутин и управлять ими. Go реализует автоматическую сборку мусора и управление стеком в своей системе времени выполнения.
Наконец, он компилирует приложения в машинный код и отдельные двоичные файлы, поддерживает несколько ОС и архитектур процессоров и легко развертывается в серверной инфраструктуре.
Блокчейн - это цифровая запись транзакций, распределенная и совместно используемая между узлами компьютерной сети. Каждая транзакция в цепочке блоков называется блоком и связывается с другой с помощью методов криптографии.
Блокчейны полезны, когда вы пытаетесь построить децентрализованную систему, которая обеспечивает безопасность и целостность данных, сохраняя при этом доверие между каждым пользователем системы.
Мы упоминали блоки ранее, и вам может быть интересно, что это такое. Проще говоря, блок - это группа данных, и несколько блоков объединяются в цепочку блоков.
Каждый блок в цепочке блоков обладает следующими свойствами:
Давайте начнем с создания нового проекта Go и импорта всех необходимых пакетов для построения нашей цепочки блоков. Создайте файл с именем blockchain.go
и сохраните в нем следующий код:
package main
import (
"crypto/sha256"
"encoding/json"
"fmt"
"strconv"
"strings"
"time"
)
Затем мы создадим настраиваемый тип блока для хранения данных нашей цепочки блоков. Добавьте в blockchain.go
файл следующий код :
type Block struct {data map [string] interface {} hash string previousHash string timestamp time.Time pow int}
Затем мы создадим собственный Blockchain
тип, содержащий наши блоки. Добавьте в blockchain.go
файл следующий код :
type Blockchain struct {
genesisBlock Block
chain []Block
difficulty int
}
genesisBlock
Свойство представляет первый блок добавляется к blockchain. Напротив, difficulty
свойство определяет минимальные усилия, которые майнеры должны предпринять для добычи блока и включения его в цепочку блоков.
Как мы обсуждали ранее, хеш блока - это его идентификатор, сгенерированный с помощью криптографии. Мы получим хэш блока для нашей цепочки блоков путем хеширования предыдущего хэша блока, текущих данных блока, отметки времени и PoW с использованием алгоритма SHA256 .
Создадим для нашего Block
типа метод , реализующий эту функциональность:
func (b Block) calculateHash() string {
data, _ := json.Marshal(b.data)
blockData := b.previousHash + string(data) + b.timestamp.String() + strconv.Itoa(b.pow)
blockHash := sha256.Sum256([]byte(blockData))
return fmt.Sprintf("%x", blockHash)
}
В приведенном выше коде мы сделали следующее:
Майнинг нового блока включает в себя создание хэша блока, который начинается с желаемого количества нулей (желаемое число - это сложность майнинга). Это означает, что если сложность блокчейна равна трем, вам необходимо сгенерировать хэш блока, который начинается, "000"
например, с "0009a1bfb506…"
.
Поскольку мы получаем хэш блока из его содержимого, нам нужно продолжать изменять значение PoW текущего блока, пока мы не получим хеш, который удовлетворяет нашему условию добычи (начальные нули> сложность).
Чтобы реализовать это, мы создадим mine()
метод для нашего Block
типа, который будет продолжать увеличивать значение PoW и вычислять хэш блока, пока мы не получим действительный хеш.
Добавьте в blockchain.go
файл следующий код :
func (b *Block) mine(difficulty int) {
for !strings.HasPrefix(b.hash, strings.Repeat("0", difficulty)) {
b.pow++
b.hash = b.calculateHash()
}
}
Затем мы напишем функцию, которая создает блок генезиса для нашей цепочки блоков и возвращает новый экземпляр Blockchain
типа.
Добавьте в blockchain.go
файл следующий код :
func CreateBlockchain(difficulty int) Blockchain {
genesisBlock := Block{
hash: "0",
timestamp: time.Now(),
}
return Blockchain{
genesisBlock,
[]Block{genesisBlock},
difficulty,
}
}
Здесь мы устанавливаем хэш нашего блока генезиса на "0"
. Поскольку это первый блок в цепочке блоков, предыдущий хэш не имеет значения, а свойство данных пусто.
Затем мы создали новый экземпляр Blockchain
типа и сохранили генезисный блок вместе со сложностью блокчейна.
Теперь, когда мы реализовали функции для наших блоков, позволяющие вычислять их хэш и добывать их самостоятельно, давайте посмотрим, как включить новые блоки в цепочку блоков.
Добавьте в blockchain.go
файл следующий код :
func (b *Blockchain) addBlock(from, to string, amount float64) {
blockData := map[string]interface{}{
"from": from,
"to": to,
"amount": amount,
}
lastBlock := b.chain[len(b.chain)-1]
newBlock := Block{
data: blockData,
previousHash: lastBlock.hash,
timestamp: time.Now(),
}
newBlock.mine(b.difficulty)
b.chain = append(b.chain, newBlock)
}
Здесь мы создали addBlock
метод для Blockchain
типа, который выполняет следующие действия:
Мы успешно создали блокчейн, который может записывать транзакции, и нам нужна функция, которая проверяет, действителен ли блокчейн, чтобы мы знали, что никакие транзакции не были подделаны.
Добавьте в blockchain.go
файл следующий код :
func (b Blockchain) isValid() bool {
for i := range b.chain[1:] {
previousBlock := b.chain[i]
currentBlock := b.chain[i+1]
if currentBlock.hash != currentBlock.calculateHash() || currentBlock.previousHash != previousBlock.hash {
return false
}
}
return true
}
Здесь мы пересчитали хэш каждого блока, сравнили их с сохраненными хеш-значениями других блоков и проверили, равно ли предыдущее хеш-значение любого другого блока хэш-значению блока перед ним. Если какая-либо из проверок завершилась неудачно, это значит, что блокчейн был взломан.
Теперь у нас есть полностью функциональный блокчейн! Давайте создадим main()
функцию, чтобы показать ее использование.
Добавьте в blockchain.go
файл следующий код :
func main() {
// create a new blockchain instance with a mining difficulty of 2
blockchain := CreateBlockchain(2)
// record transactions on the blockchain for Alice, Bob, and John
blockchain.addBlock("Alice", "Bob", 5)
blockchain.addBlock("John", "Bob", 2)
// check if the blockchain is valid; expecting true
fmt.Println(blockchain.isValid())
}
В этом руководстве вы узнали, как блокчейны работают под капотом, в том числе какие блоки и что они содержат, а также как рассчитать хэш блока, реализовать алгоритм консенсуса для блоков майнинга, записать транзакции в блокчейне и проверить подлинность блокчейн.
Исходный код блокчейна Go доступен в виде GitHub Gist . Мне не терпится увидеть удивительные вещи, которые вы создаете с помощью Go, поскольку он хорошо подходит для приложений, в которых эффективность и производительность являются главным приоритетом.