// Perform your desired action here (function (s, e, n, d, er) { s['Sender'] = er; s[er] = s[er] || function () { (s[er].q = s[er].q || []).push(arguments) }, s[er].l = 1 * new Date(); var a = e.createElement(n), m = e.getElementsByTagName(n)[0]; a.async = 1; a.src = d; m.parentNode.insertBefore(a, m) })(window, document, 'script', 'https://cdn.sender.net/accounts_resources/universal.js', 'sender'); sender('986212f6399684')

دیتاست یادگیری ماشین استاندارد + ۵ مثال کامل در دیتاست های طبقه بندی باینری

دیتاست یادگیری ماشین استاندارد

بهتر است مبتدیان در یادگیری ماشین بر روی دیتاست‌های (مجموعه داده های) کوچک دنیای واقعی تمرین کنند. به اصطلاح مجموعه داده های یادگیری ماشین استاندارد شامل مشاهدات واقعی هستند و به خوبی مورد مطالعه و درک قرار می گیرند. به این ترتیب افراد می توانند از آن ها برای آزمایش سریع، اکتشاف و تمرین تکنیک های آماده سازی داده ها و مدل سازی استفاده کنند.

مهارت های ایجاد شده، در مجموعه داده های یادگیری ماشین استاندارد، می تواند زمینه را برای انجام پروژه های بزرگتر و چالش برانگیز فراهم آورد.

در این مقاله دیتاست های استاندارد یادگیری ماشین برای طبقه بندی باینری را مطالعه خواهید کرد.

 

ارزش دیتا‌ست‌های یادگیری ماشین کوچک

تعدادی دیتا‌ست یادگیری ماشین کوچک برای طبقه بندی و مسائل مدل سازی پیش بینی رگرسیون وجود دارند که اغلب مورد استفاده قرار می گیرند. گاهی اوقات مجموعه داده ها به عنوان پایه ای برای نشان دادن روش یادگیری ماشین یا تکنیک تهیه داده استفاده می شود. در مواردی دیگر، از آنها به عنوان پایه ای برای مقایسه تکنیک های مختلف استفاده می گردد.

این داده ها در اوایل ظهور یادگیری ماشین جمع آوری و در دسترس عموم قرار گرفتند. پیدا کردن یک مدل خوب در یکی از این مجموعه داده ها به این معنی نیست که شما مشکل کلی را حل کرده اید. همچنین، برخی از مجموعه داده ها ممکن است حاوی اسامی یا نشانگرهایی باشند که ممکن است از نظر فرهنگی بحث برانگیز تلقی شوند. به این نوع مجموعه داده‌ها، مجموعه داده های “TOY” می گویند.

 

تعریف دیتاست یادگیری ماشین استاندارد

یک مجموعه داده استاندارد یادگیری ماشین دارای خصوصیات زیر است.

  • کمتر از ١٠٠٠٠ردیف (نمونه).
  • کمتر از ١٠٠ ستون (ویژگی).
  • ستون آخر متغیر هدف است.
  • در یک پرونده واحد با فرمت CSV و بدون خط Header ذخیره می شود.
  • مقادیر ناموجود با یک علامت سؤال (“؟”) مشخص می شوند.

 

اکنون که تعریف واضحی از مجموعه داده داریم، ببینیم که یک نتیجه “خوب” به چه معنی است.

 

دیتاست یادگیری ماشین استاندارد

دیتاست یادگیری ماشین

یک دیتاست یادگیری ماشین زمانی استاندارد است که مرتبا در کتاب ها، مقالات تحقیقاتی، آموزش ها، سخنرانی ها و موارد دیگر مورد استفاده قرار بگیرد. بهترین مخزن برای این مجموعه داده های به اصطلاح کلاسیک یا استاندارد یادگیری ماشین، مخزن یادگیری ماشین دانشگاه UCI است. این وب سایت مجموعه داده ها را براساس نوعشان طبقه بندی کرده و بارگیری داده ها و اطلاعات اضافی در مورد هر مجموعه داده و مقالات مربوطه را ارائه می دهد.

 

نتایج خوب برای مجموعه داده های استاندارد

چالش برای مبتدیان هنگام کار با مجموعه داده های یادگیری ماشین استاندارد این است که چه چیزی یک نتیجه خوب را رقم میزند. خوب به معنای پیش بینی های کامل نیست. همه مدل ها دارای خطاهای پیش بینی هستند و پیش بینی های کامل در مجموعه های داده های دنیای واقعی امکان پذیر نیست. تعریف نتایج “خوب” یا “عالی” برای یک مجموعه داده چالش برانگیز است؛ زیرا به طور کلی به روش ارزیابی مدل، نسخه های مجموعه داده و کتابخانه های مورد استفاده در ارزیابی بستگی دارد.

خوب به معنای “به اندازه کافی خوب” با توجه به منابع موجود است. غالباً ، این به معنای نمره مهارتی (skill score) بالاتر از ٨٠ یا ٩٠ درصد است.

 

نتایج برای مجموعه داده های طبقه بندی

طبقه بندی یک مساله مدل سازی پیش بینی است که با توجه به یک یا چند متغیر ورودی یک برچسب پیش بینی می کند.

خط مبنا در تسک های طبقه بندی مدلی است که برچسب اکثریت را پیش بینی می کند. در scikit-learn با استفاده از کلاس DummyClassifier با استراتژی ‘most_frequent learn. به عنوان مثال:

model = DummyClassifier(strategy='most_frequent'

 

ارزیابی استاندارد برای مدل های طبقه بندی، دقت طبقه بندی است.

دو نوع اصلی تسک طبقه بندی وجود دارد: طبقه بندی باینری (binary) و چند طبقه (multi-class).

 

دیتاست های طبقه بندی باینری

در این بخش، ما خط مبنا و عملکرد خوب را در دیتاست‌های مدل سازی پیش بینی طبقه بندی باینری زیر بررسی خواهیم کرد:

 

  • Ionosphere
  • Pima Indian Diabetes
  • Sonar
  • Wisconsin Breast Cancer
  • Horse Colic

 

Ionosphere

فایل های زیر را دانلود کنید:

ionosphere.csv

ionosphere.names

 

مثال کامل کد برای دستیابی به خط مبنا و نتیجه خوب در این مجموعه داده در زیر آورده شده است.

#baseline and good result for Ionosphere
from numpy import mean 
from numpy import std 
from pandas import read_csv 
from sklearn.preprocessing import LabelEncoder 
from sklearn.model_selection import cross_val_score
from sklearn.model_selection import RepeatedStratifiedKFold
from sklearn.pipeline import Pipeline 
from sklearn.preprocessing import StandardScaler
from sklearn.preprocessing import MinMaxScaler
from sklearn.dummy import DummyClassifier 
from sklearn.svm import SVC 
#load dataset 
url = 'https://raw.githubusercontent.com/jbrownlee/Datasets/master/ionosphere.csv' 
dataframe = read_csv(url, header=None) 
data = dataframe.values 
X, y = data[:, :-1], data[:, -1] 
print('Shape: %s, %s' % (X.shape,y.shape)) 
# minimally prepare dataset 
X = X.astype('float32') y = LabelEncoder().fit_transform(y.astype('str')) 
# evaluate naive 
naive = DummyClassifier(strategy='most_frequent') 
cv = RepeatedStratifiedKFold(n_splits=10, n_repeats=3, random_state=1) 
n_scores = cross_val_score(naive, X, y, scoring='accuracy', 
cv=cv, n_jobs=-1, error_score='raise') 
print('Baseline: %.3f (%.3f)' % (mean(n_scores), std(n_scores))) 
# evaluate model 
model = SVC(kernel='rbf', gamma='scale', C=10) steps = [('s',StandardScaler()), ('n',MinMaxScaler()), ('m',model)] 
pipeline = Pipeline(steps=steps) 
m_scores = cross_val_score(pipeline, X, y, scoring='accuracy', cv=cv, n_jobs=-1, error_score='raise') 
print('Good: %.3f (%.3f)' % (mean(m_scores), std(m_scores)))

 

با اجرای مثال، باید نتایج زیر را مشاهده کنید.

Shape: (351, 34), (351,) Baseline: 0.641 (0.006) Good: 0.948 (0.033)

 

Pima Indian Diabetes

فایل های زیر را دانلود کنید:

pima-indians-diabetes.csv

pima-indians-diabetes.name

 

مثال کامل کد برای دستیابی به خط مبنا و نتیجه خوب در این مجموعه داده در زیر آورده شده است.

baseline and good result for Pima Indian Diabetes
from numpy import mean 
from numpy import std 
from pandas import read_csv 
from sklearn.preprocessing import LabelEncoder 
from sklearn.model_selection import cross_val_score 
from sklearn.model_selection import RepeatedStratifiedKFold 
from sklearn.dummy import DummyClassifier 
from sklearn.linear_model import LogisticRegression 
# load dataset 
url = 'https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.csv' 
dataframe = read_csv(url, header=None) d
ata = dataframe.values 
X, y = data[:, :-1], data[:, -1] 
print('Shape: %s, %s' % (X.shape,y.shape)) 
# minimally prepare dataset 
X = X.astype('float32') y = LabelEncoder().fit_transform(y.astype('str')) 
# evaluate naive naive = DummyClassifier(strategy='most_frequent') 
cv = RepeatedStratifiedKFold(n_splits=10, n_repeats=3, random_state=1) 
n_scores = cross_val_score(naive, X, y, scoring='accuracy', cv=cv, n_jobs=-1, error_score='raise') 
print('Baseline: %.3f (%.3f)' % (mean(n_scores), std(n_scores))) 
# evaluate model model = LogisticRegression(solver='newton-cg',penalty='l2',C=1) 
m_scores = cross_val_score(model, X, y, scoring='accuracy', cv=cv, n_jobs=-1, error_score='raise') 
print('Good: %.3f (%.3f)' % (mean(m_scores), std(m_scores)))

 

با اجرای مثال، باید نتایج زیر را مشاهده کنید.

Shape: (768, 8), (768,) Baseline: 0.651 (0.003) Good: 0.774 (0.055)

 

Sonar

فایل های زیر را دانلود کنید:

sonar.csv

sonar.names

 

مثال کامل کد برای دستیابی به خط مبنا و نتیجه خوب در این مجموعه داده در زیر آورده شده است.

#baseline and good result for Sonar 
from numpy import mean 
from numpy import std 
from pandas import read_csv 
from sklearn.preprocessing import LabelEncoder 
from sklearn.model_selection import cross_val_score 
from sklearn.model_selection import RepeatedStratifiedKFold 
from sklearn.pipeline import Pipeline 
from sklearn.preprocessing import PowerTransformer 
from sklearn.dummy import DummyClassifier 
from sklearn.neighbors import KNeighborsClassifier 
# load dataset url = 'https://raw.githubusercontent.com/jbrownlee/Datasets/master/sonar.csv' 
dataframe = read_csv(url, header=None) 
data = dataframe.values 
X, y = data[:, :-1], data[:, -1] 
print('Shape: %s, %s' % (X.shape,y.shape)) 
# minimally prepare dataset 
X = X.astype('float32') y = LabelEncoder().fit_transform(y.astype('str')) 
# evaluate naive naive = DummyClassifier(strategy='most_frequent') 
cv = RepeatedStratifiedKFold(n_splits=10, n_repeats=3, random_state=1)
n_scores = cross_val_score(naive, X, y, scoring='accuracy', cv=cv, n_jobs=-1, error_score='raise') 
print('Baseline: %.3f (%.3f)' % (mean(n_scores), std(n_scores))) 
# evaluate model model = KNeighborsClassifier(n_neighbors=2, metric='minkowski', weights='distance') 
steps = [('p',PowerTransformer()), ('m',model)] 
pipeline = Pipeline(steps=steps) 
m_scores = cross_val_score(pipeline, X, y, scoring='accuracy', cv=cv, n_jobs=-1, error_score='raise') 
print('Good: %.3f (%.3f)' % (mean(m_scores), std(m_scores)))

 

با اجرای مثال، باید نتایج زیر را مشاهده کنید.

Shape: (208, 60), (208,) Baseline: 0.534 (0.012) Good: 0.882 (0.071)

Wisconsin Breast Cancer

فایل های زیر را دانلود کنید:

breast-cancer-wisconsin.csv

breast-cancer-wisconsin.names

 

مثال کامل کد برای دستیابی به خط مبنا و نتیجه خوب در این مجموعه داده در زیر آورده شده است.

 

#baseline and good result for Wisconsin Breast Cancer 
from numpy import mean 
from numpy import std 
from pandas import read_csv 
from sklearn.preprocessing import LabelEncoder 
from sklearn.model_selection import cross_val_score 
from sklearn.model_selection import RepeatedStratifiedKFold 
from sklearn.pipeline import Pipeline 
from sklearn.preprocessing import PowerTransformer 
from sklearn.impute import SimpleImputer 
from sklearn.dummy import DummyClassifier 
from sklearn.svm import SVC 
# load dataset
 url = 'https://raw.githubusercontent.com/jbrownlee/Datasets/master/breast-cancer-wisconsin.csv' 
dataframe = read_csv(url, header=None, na_values='?') 
data = dataframe.values 
X, y = data[:, :-1], data[:, -1] print('Shape: %s, %s' % (X.shape,y.shape)) 
# minimally prepare dataset
X = X.astype('float32') y = LabelEncoder().fit_transform(y.astype('str')) 
# evaluate naive 
naive = DummyClassifier(strategy='most_frequent') 
cv = RepeatedStratifiedKFold(n_splits=10, n_repeats=3, random_state=1) 
n_scores = cross_val_score(naive, X, y, scoring='accuracy', cv=cv, n_jobs=-1, error_score='raise') 
print('Baseline: %.3f (%.3f)' % (mean(n_scores), std(n_scores))) 
# evaluate model 
model = SVC(kernel='sigmoid', gamma='scale', C=0.1) steps = [('i',SimpleImputer(strategy='median')), ('p',PowerTransformer()), ('m',model)] 
pipeline = Pipeline(steps=steps)
m_scores = cross_val_score(pipeline, X, y, scoring='accuracy', cv=cv, n_jobs=-1, error_score='raise') 
print('Good: %.3f (%.3f)' % (mean(m_scores), std(m_scores)))

 

با اجرای مثال، باید نتایج زیر را مشاهده کنید:

Shape: (699, 9), (699,) Baseline: 0.655 (0.003) Good: 0.973 (0.019)

 

Horse Colic

فایل های زیر را دانلود کنید:

horse-colic.csv

horse-colic.names

 

مثال کامل کد برای دستیابی به خط مبنا و نتیجه خوب در این مجموعه داده در زیر آورده شده است.

 

#baseline and good result for Horse Colic 
from numpy import mean 
from numpy import std 
from pandas import read_csv 
from sklearn.preprocessing import LabelEncoder 
from sklearn.model_selection import cross_val_score 
from sklearn.model_selection import RepeatedStratifiedKFold 
from sklearn.pipeline import Pipeline 
from sklearn.impute import SimpleImputer 
from sklearn.dummy import DummyClassifier 
from sklearn.ensemble import RandomForestClassifier 

# load dataset 
url = 'https://raw.githubusercontent.com/jbrownlee/Datasets/master/horse-colic.csv' dataframe = read_csv(url, header=None, na_values='?') 
data = dataframe.values ix = [i for i in range(data.shape[1]) if i != 23] X, y = data[:, ix], data[:, 23] print('Shape: %s, %s' % (X.shape,y.shape)) 

# minimally prepare dataset 
X = X.astype('float32') y = LabelEncoder().fit_transform(y.astype('str')) 

# evaluate naive 
naive = DummyClassifier(strategy='most_frequent') 
cv = RepeatedStratifiedKFold(n_splits=10, n_repeats=3, random_state=1) 
n_scores = cross_val_score(naive, X, y, scoring='accuracy', cv=cv, n_jobs=-1, error_score='raise') 
print('Baseline: %.3f (%.3f)' % (mean(n_scores), std(n_scores))) 

# evaluate model 
model = RandomForestClassifier(n_estimators=1000) 
imputer = SimpleImputer(strategy='median', add_indicator=True) 
pipeline = Pipeline(steps=[('i', imputer), ('m', model)]) 
m_scores = cross_val_score(pipeline, X, y, scoring='accuracy', cv=cv, n_jobs=-1, error_score='raise') 
print('Good: %.3f (%.3f)' % (mean(m_scores), std(m_scores)))

 

با اجرای مثال، باید نتایج زیر را مشاهده کنید.

Shape: (300, 27), (300,) Baseline: 0.637 (0.010) Good: 0.867 (0.055)

آیا این مطلب برای شما مفید بود؟

امتیازشو ثبت کنید

میانگین / 5. تعداد رای

اولین نفر شما امتیاز دهید

نوشته شده توسط
عارفه ضیائی

من عارفه ضیایی هستم دانشجوی برتر دوره ۵ آموزش سئو آکادمی آمانج مارکتر، مهندس و اغلب در حال جستجو

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *