[Границы компьютерных наук] Глава 3 Ответы 2022 — Машинное обучение

Глава 3

3.1 Прогнозирование веса овчарки методом линейной регрессии

3.1.1 Ввод данных

train_x = [27, 29, 34, 40, 42, 47, 48, 49, 50, 52, 52, 52, 54]

train_y = [6, 7.5, 9, 10.7, 12.8, 15.1, 16, 18.5, 19.4, 18.4, 19.7, 21.8, 21.7]

print_shape(train_x)
print_shape(train_y)

3.1.2 Определение модели линейной регрессии

model = linear_regressor()

3.1.3 Обучение модели линейной регрессии

model.train(train_x, train_y)

3.1.4 Визуализация модели

model.show()

3.1.5 Предсказание модели — функция предсказания()

x = 40
pred_y = model.predict(x)
print(pred_y)

3.1.6 Параметры в модели

weights = model.get_weights()
print(weights)
k = weights[0]
b = weights[1]
print("k=",k)
print("b=",b)

3.1.7 Определение линейной функции

def linear_function(x, k, b):
    y = k * x + b
    return y

3.1.8 Прогнозирование с использованием линейных функций

x = 40
pred_y = linear_function(x, k, b)
print(pred_y)

3.1.9 Анализ модели — влияние подбора данных с выбросами и результатов

train_y[5] = 30
model = linear_regressor()
model.train(train_x, train_y)
model.show()

3.2 Прогнозирование веса овчарки методом полиномиальной регрессии

3.2.1 Ввод данных

train_x = [27, 29, 34, 40, 42, 47, 48, 49, 50, 52, 52, 52, 54]

train_y = [6, 7.5, 9, 10.7, 12.8, 15.1, 16, 18.5, 19.4, 18.4, 19.7, 21.8, 21.7]

3.2.2 Определение модели полиномиальной регрессии

model = poly_regressor(2)

3.2.3 Обучение модели полиномиальной регрессии

model.train(train_x,train_y)

3.2.4 Визуализация модели

model.show()

3.2.5 Прогнозирование модели

x = 40
pred_y = model.predict(x)
print(pred_y)

3.2.6 Влияние количества моделей на эффект подгонки

model = poly_regressor(3)
model.train(train_x,train_y)
model.show()

model = poly_regressor(10)
model.train(train_x,train_y)
model.show()

model = poly_regressor(30)
model.train(train_x,train_y)
model.show()

3.2.7 Влияние аномальных данных на эффект подгонки

train_y[5] = 30
model = poly_regressor(2)
model.train(train_x, train_y)
model.show()

model = poly_regressor(30)
model.train(train_x,train_y)
model.show()

3.3 Оценка модели линейной регрессии и тестовый набор

3.3.1 Обучение линейной модели

train_x = [27, 29, 34, 40, 42, 47, 48, 49, 50, 52, 52, 52, 54]

train_y = [6, 7.5, 9, 10.7, 12.8, 15.1, 16, 18.5, 19.4, 18.4, 19.7, 21.8, 21.7]

model = linear_regressor()
model.train(train_x, train_y)
model.show()

3.3.2 Определение функции ошибки

def mse_error(pred, y):
    error = 0
    for i in range(len(pred)):
        error = error + (y[i] - pred[i]) **2
        error = error / len(pred)
        return error
    print(mse_error(train_x, train_y))

3.3.3 Расчет погрешности подбора

pred_y = model.predict(train_x)
error = mse_error(pred_y, train_y)
print(error)

3.3.4 Запишите процесс вычисления ошибки в функцию

def compute_error(model, x, y):
    pred = model.predict(x)
    error = mse_error(pred, y)
    return error

3.3.5 Сравнение моделей

model2 = poly_regressor(3)
model2.train(train_x, train_y)
model2.show()
print(compute_error(model2, train_x, train_y))

model3 = poly_regressor(30)
model3.train(train_x, train_y)
model3.show()
print(compute_error(model3, train_x, train_y))

3.3.6 Обучающий набор, тестовый набор и проблема переобучения

test_x = [23, 31, 32, 38, 40, 45, 49, 50, 50, 51, 51, 53, 55]

test_y = [6.3, 7.2, 9.1, 10.5, 12.9, 15.5, 15.9, 18.3, 19.7, 18.9, 19.3, 21.3, 22.1]

print("线性回归误差:", compute_error(model, test_x, test_y))
print("3次多项式误差:", compute_error(model2, test_x, test_y))
print("30次多项式误差:", compute_error(model3, test_x, test_y))

3.4 Производительность предсказания линейной классификации

3.4.1 Чтение данных

train_x = [60, 56, 60, 55, 60, 57, 65, 60, 62, 59, 43, 52, 41, 45, 43, 50, 46, 52, 56, 56]

train_y = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]

3.4.2 Определение модели линейной классификации

model = linear_classifier()

3.4.3 Обучение модели линейной классификации

model.train(train_x, train_y)

3.4.4 Визуализация модели

model.show()

3.4.5 Модельное приложение — функция предсказания()

x = 60
pred_y = model.predict(x)
print(pred_y)

3.4.6 Параметры в модели

weights = model.get_weights()
print(weights)
k = weights[0]
b = weights[1]
print("k=", k)
print("b=", b)

3.4.7 Определение функции линейной классификации

def decision_function(x, k, b):
    if k * x + b > 0:
        return 1
    else:
        return -1

pred = decision_function(3, 2, -5.5)
print(pred)

pred = decision_function(3, 2, -6.5)
print(pred)

3.4.8 Прогнозирование с использованием функций линейной классификации

k, b = model.get_weights()

x = 60
pred_y = decision_function(x, k, b)
print(pred_y)

3.4.9 Расчет точности

def accuracy(pred, y):
    right = 0
    total = 0
    for i in range(len(pred)):
        if pred[i] == y[i]:
            right += 1
            total += 1
            acc = right / total
            return acc

pred_y = model.predict(train_x)
acc = accuracy(pred_y, train_y)
print(acc)

3.4.10 Сравнение линейной классификации и линейной регрессии

model2 = linear_regressor()
model2.train(train_x, train_y)
model2.show()

3.5 Использование роста и веса для предсказания пола

3.5.1 Чтение данных

train_x_m = [[163, 60], [164, 56], [165, 60], [168, 55], [169, 60],[170, 57], [170, 65], [171, 60], [170, 62], [169, 59],[153, 43], [158, 52], [156, 41], [158, 45], [159, 43],[160, 50], [159, 46], [158, 52], [157, 56], [158, 55],[167, 53], [168, 52], [163, 65], [171, 52], [169, 52],[170, 57], [170, 60], [168, 52], [166, 60], [165, 51],[153, 43], [158, 55], [156, 41], [156, 57], [159, 43],[163, 41], [162, 56], [155, 52], [152, 56], [153, 55]]
train_x_s = [60, 56, 60, 55, 60, 57, 65, 60, 62, 59, 43, 52, 41, 45, 43, 50, 46, 52, 56, 55, 53, 52, 65, 52, 52, 57, 60, 52, 60, 51, 43, 55, 41, 57, 43, 41, 56, 52, 56, 55]
train_y = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]
test_x_m = [[166, 58], [162, 56], [178, 66], [153, 50], [140, 60], [160, 55]]
test_x_s = [58, 56, 66, 50, 60, 55]
test_y = [1, 1, 1, -1, -1, -1]

3.5.2 Визуализация данных

visualize_data2D(train_x_s, train_y)
visualize_data3D(train_x_m, train_y)

3.5.3 Обучение и проверка многомерной классификации

model = linear_classifier()
model.train(train_x_m, train_y)
pred_y = model.predict(test_x_m)
acc = accuracy(pred_y, test_y)
print(acc)

3.5.4 Многомерные классификаторы и одномерные классификаторы

model2 = linear_classifier()
model2.train(train_x_s, train_y)
red_y = model2.predict(test_x_s)
acc = accuracy(pred_y, test_y)
print(acc)

3.6 Классификация цветков ириса с помощью персептронов

3.6.1 Загрузка базы данных

iris = data.get('iris-simple')

3.6.2 Показать базу данных

fig() + plot(iris)

3.6.3 Создание классификатора

blc = binary_linear_classifier()

3.6.4 Обучение классификатора

blc.train(iris, alg=Perceptron())

3.6.5 Установка скорости обучения персептрона

blc1 = binary_linear_classifier()
blc1.train(iris, alg=Perceptron(lr=0.4))
blc2 = binary_linear_classifier()
blc2.train(iris, alg=Perceptron(lr=0.05))

blc3 = binary_linear_classifier()
blc3.train(iris, alg=Perceptron(w=[1 ,1], b=1))

3.6.6 Сравнение результатов обучения

fig() + plot(iris) + plot(blc) + plot(blc1) + plot(blc2)

3.7 Использование метода опорных векторов для завершения классификации радужной оболочки

3.7.1 Загрузка набора данных

iris=data.get('iris-simple')
fig() + plot(iris)

3.7.2 Создание классификатора

blc = binary_linear_classifier() 

3.7.3 Обучение классификатора с помощью машин опорных векторов

blc.train(iris, alg=SVM())

fig() + plot(iris) + plot(blc)

3.8 Проверка и применение классификатора

3.8.1 Загрузка набора данных

iris=data.get('iris-simple')
fig() + plot(iris)

3.8.2 Сегментация данных

iris_train, iris_test = iris.split(7,3)

fig() + plot(iris_train)

3.8.3 Получить классификатор

blc1=binary_linear_classifier() 
blc2=binary_linear_classifier() 

blc1.train(iris_train, alg=Perceptron(lr=0.2))
blc2.train(iris_train, alg=SVM())

fig() + plot(iris_train) + plot(blc1) + plot(blc2)

3.8.4 Тестирование классификатора

acc1 = blc1.accuracy(iris_test)
acc2 = blc2.accuracy(iris_test)
print('Perceptron Accuracy:', acc1)
print('SVM Accuracy:', acc2)

3.8.5 Применение классификатора

point = [2, 0.7]
fig() + plot(iris) + plot(blc1) + plot(blc2) + plot([point])
label1 = blc1.predict(point)
label2 = blc2.predict(point)
print('Perceptron Prediction: ', label1)
print('SVM Prediction: ', label2)

3.9 Понимание алгоритма К-средних

3.9.1 Получить набор данных

iris = data.get('iris')
feature, label = iris[0]
print("Feature : ", feature)

3.9.2 Выбор характеристик набора данных

def select_features(feature):
    return feature[2:4]

iris2 = iris.map(select_features, on_field=0)

fig() + plot(iris2, type='scatter')

3.9.3 Создание модели кластеризации K-средних

model = KMeans(K=3)

3.9.4 Обучение модели и наблюдение за эффектом обучения

def select_features(feature):
    return feature[2:4]

iris2 = iris.map(select_features, on_field=0)

model.train(iris2.field(0))

fig() + plot(model, iris2, type='cluster_statistics')

3.9.5 Повторить и сравнить

model2 = KMeans(K=3)
model2.train(iris.field(0))
fig() + plot(model2, iris, type='cluster_statistics')

Supongo que te gusta

Origin blog.csdn.net/m0_68192925/article/details/127555670
Recomendado
Clasificación