Искусственный интеллект

Домой Что такое ИИ? Человеческий интеллект История языков История чисел История вычислений Роботы Замена работы Примеры ИИ Теория разума Программирование JavaScript ИИ в браузере

Математика

Математика Линейные функции Линейная алгебра Векторы Матрицы Тензоры

Статистика

Вероятность Статистика Распределение

Графика

ИИ-плоттер Линейные графики ИИ Диаграммы рассеяния ИИ

Наука ИИ

наук Сбор данных Кластеризация Регрессии Машинное обучение Нейронные сети

Машинное обучение

Персептроны Признание Обучение Тестирование Обучение Терминология Мозг.js

ТензорФлоу

Учебник по TFJS Операции TFJS Модели TFJS Средство просмотра TFJS

Пример 1

Ex1 Введение Ex1 данные Модель Ex1 Ex1 Обучение

Пример 2

Ex2 Введение Ex2 Данные Модель Ex2 Ex2 Обучение

JS-графика

вступление Графическое полотно График Plotly.js График Chart.js График Google График D3.js

Линейные регрессии

Регрессияэто метод определения взаимосвязи между одной переменной ( y ) и другими переменными ( x ).

В статистике линейная регрессия — это подход к моделированию линейной зависимости между y и x.

В ИИ линейная регрессия — это контролируемый алгоритм машинного обучения.

Точечная диаграмма

Это точечная диаграмма (из предыдущей главы):

4060801001201401606810121416
House Prices vs. SizeSquare MetersPrice in Millions

Пример

var xArray = [50,60,70,80,90,100,110,120,130,140,150];
var yArray = [7,8,8,9,9,9,10,11,14,14,15];

// Define Data
var data = [{
  x:xArray,
  y:yArray,
  mode: "markers"
}];

// Define Layout
var layout = {
  xaxis: {range: [40, 160], title: "Square Meters"},
  yaxis: {range: [5, 16], title: "Price in Millions"},
  title: "House Prices vs. Size"
};

Plotly.newPlot("myPlot", data, layout);

Прогнозирование значений

Исходя из приведенных выше разрозненных данных, как мы можем предсказать будущие цены?

  • Используйте нарисованный вручную линейный график
  • Смоделируйте линейную зависимость
  • Смоделируйте линейную регрессию

Линейные графики

Это линейный график, предсказывающий цены на основе самой низкой и самой высокой цены:

4060801001201401606810121416
trace 0trace 1House Prices vs. SizeSquare MetersPrice in Millions

Пример

var xArray = [50,60,70,80,90,100,110,120,130,140,150];
var yArray = [7,8,8,9,9,9,9,10,11,14,14,15];

var data = [
  {x:xArray, y:yArray, mode:"markers"},
  {x:[50,150], y:[7,15], mode:"line"}
];

var layout = {
  xaxis: {range: [40, 160], title: "Square Meters"},
  yaxis: {range: [5, 16], title: "Price in Millions"},
  title: "House Prices vs. Size"
};

Plotly.newPlot("myPlot", data, layout);

Из предыдущей главы

Линейный граф можно записать как y = ax + b

Где:

  • y - цена, которую мы хотим предсказать
  • а - наклон линии
  • x - входные значения
  • b - перехват

Линейные отношения

Эта модель прогнозирует цены, используя линейную зависимость между ценой и размером:

4060801001201401606810121416
trace 0trace 1House Prices vs. SizeSquare MetersPrice in Millions

Пример

var xArray = [50,60,70,80,90,100,110,120,130,140,150];
var yArray = [7,8,8,9,9,9,10,11,14,14,15];

// Calculate Slope
var xSum = xArray.reduce(function(a, b){return a + b;}, 0);
var ySum = yArray.reduce(function(a, b){return a + b;}, 0);
var slope = ySum / xSum;

// Generate values
var xValues = [];
var yValues = [];
for (var x = 50; x <= 150; x += 1) {
  xValues.push(x);
  yValues.push(x * slope);
}

В приведенном выше примере наклон является рассчитанным средним значением, а точка пересечения = 0.


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

Эта модель прогнозирует цены, используя функцию линейной регрессии:

4060801001201401606810121416
trace 0trace 1House Prices vs. SizeSquare MetersPrice in Millions

Пример

var xArray = [50,60,70,80,90,100,110,120,130,140,150];
var yArray = [7,8,8,9,9,9,10,11,14,14,15];

// Calculate Sums
var xSum=0, ySum=0 , xxSum=0, xySum=0;
var count = xArray.length;
for (var i = 0, len = count; i < count; i++) {
  xSum += xArray[i];
  ySum += yArray[i];
  xxSum += xArray[i] * xArray[i];
  xySum += xArray[i] * yArray[i];
}

// Calculate slope and intercept
var slope = (count * xySum - xSum * ySum) / (count * xxSum - xSum * xSum);
var intercept = (ySum / count) - (slope * xSum) / count;

// Generate values
var xValues = [];
var yValues = [];
for (var x = 50; x <= 150; x += 1) {
  xValues.push(x);
  yValues.push(x * slope + intercept);
}