房价预测(HackerRank)

从今天开始要多做一些关于机器学习方面的竞赛题目,题目来源主要是HackerrankKaggle。链接如下

Hackerrank:https://www.hackerrank.com/

Kaggle:https://www.kaggle.com/

在Hackerrank中提交源代码,这就使得很多库都需要自己写,限制比较多。而Kaggle只需要提交数据,所以随便怎么搞都行。现在来讲第一道题,房价预测,这是Andrew Ng课程里的比较经典的例子。题目描述如下

题目:https://www.hackerrank.com/challenges/predicting-house-prices

分析:比较简单,用梯度下降法即可。

代码:

#include <iostream>
#include <string.h>
#include <fstream>
#include <stdio.h>
#include <math.h>
#include <vector>

#define Vector vector
using namespace std;

struct Data
{
    Vector<double> x;
    double y;
};

double WX(const Data& d, const Vector<double>& w)
{
    double ans = 0;
    for(int i = 0; i < w.size(); i++)
        ans += w[i] * d.x[i];
    return ans;
}

void Gradient(const Vector<Data>& d, Vector<double> &w, double alpha)
{
    for(int i = 0; i < w.size(); i++)
    {
        double tmp = 0;
        for(int j = 0; j < d.size(); j++)
			tmp += alpha * d[j].x[i] * (WX(d[j], w) - d[j].y);
        w[i] -= tmp;
    }
}

double getValues(const Vector<Data>& d, Vector<double> w)
{
	double res = 0;
	for(int i = 0; i < d.size(); i++)
	{
		double tmp = WX(d[i], w);
		res += (d[i].y - tmp) * (d[i].y - tmp);  //常用平方来衡量误差
	}
	return res;
}

void Iterator(const Vector<Data>& d, Vector<double> &w)
{
	double alpha = 0.005;
	double delta = 0.000001;
	double oldVal = getValues(d, w);
	Gradient(d, w, alpha);
	double newVal = getValues(d, w);
	while(fabs(oldVal - newVal) > delta)
	{
		oldVal = newVal;
		Gradient(d, w, alpha);
		newVal = getValues(d, w);
	}
}

int main()
{
	//freopen("data", "r", stdin);
	int F, N;
    Vector<double> w;
    Vector<Data> d;
    while(scanf("%d %d", &F, &N) != EOF)
	{
		d.clear();
		w.clear();
        for(int i = 0; i < N; i++)
		{
			Data t;
			double _x, _y;
			t.x.push_back(1);
			for(int j = 1; j <= F; j++)
			{
				scanf("%lf", &_x);
				t.x.push_back(_x);
			}
			scanf("%lf", &_y);
			t.y = _y;
			d.push_back(t);
		}
		for(int i = 0; i <= F; i++)
			w.push_back(0);
		Iterator(d, w);
		d.clear();
		scanf("%d", &N);
		for(int i = 0; i < N; i++)
		{
			Data t;
			double _x;
			t.x.push_back(1);
			for(int j = 1; j <= F; j++)
			{
				scanf("%lf", &_x);
				t.x.push_back(_x);
			}
			printf("%.2lf\n", WX(t, w));
		}
	}
    return 0;
}
时间: 2024-10-23 04:35:33

房价预测(HackerRank)的相关文章

Python——决策树实战:california房价预测

Python--决策树实战:california房价预测 编译环境:Anaconda.Jupyter Notebook 首先,导入模块: 1 import pandas as pd 2 import matplotlib.pyplot as plt 3 %matplotlib inline 接下来导入数据集: 1 from sklearn.datasets.california_housing import fetch_california_housing 2 housing = fetch_c

02-08 多项式回归(波士顿房价预测)

目录 多项式回归(波士顿房价预测) 一.导入模块 二.获取数据 三.训练模型 3.1 报告决定系数 四.可视化 更新.更全的<机器学习>的更新网站,更有python.go.数据结构与算法.爬虫.人工智能教学等着你:https://www.cnblogs.com/nickchen121/ 多项式回归(波士顿房价预测) 一.导入模块 import pandas as pd import numpy as np import matplotlib.pyplot as plt from matplot

02-06 普通线性回归(波斯顿房价预测)+特征选择

目录 普通线性回归(波士顿房价预测) 一.导入模块 二.获取数据 2.1 打印数据 三.特征选择 3.1 散点图矩阵 3.2 关联矩阵 四.训练模型 五.可视化 更新.更全的<机器学习>的更新网站,更有python.go.数据结构与算法.爬虫.人工智能教学等着你:https://www.cnblogs.com/nickchen121/ 普通线性回归(波士顿房价预测) 一.导入模块 import pandas as pd import numpy as np import matplotlib.

02-11 RANSAC算法线性回归(波斯顿房价预测)

目录 RANSAC算法线性回归(波斯顿房价预测) 一.RANSAC算法流程 二.导入模块 三.获取数据 四.训练模型 五.可视化 更新.更全的<机器学习>的更新网站,更有python.go.数据结构与算法.爬虫.人工智能教学等着你:https://www.cnblogs.com/nickchen121/ RANSAC算法线性回归(波斯顿房价预测) 虽然普通线性回归预测结果总体而言还是挺不错的,但是从数据上可以看出数据集中有较多的离群值,因此本节将使用RANSAC算法针对离群值做处理,即根据数据

02-07 多元线性回归(波士顿房价预测)

目录 多元线性回归(波士顿房价预测) 一.导入模块 二.获取数据 三.训练模型 四.可视化 五.均方误差测试 更新.更全的<机器学习>的更新网站,更有python.go.数据结构与算法.爬虫.人工智能教学等着你:https://www.cnblogs.com/nickchen121/ 多元线性回归(波士顿房价预测) 一.导入模块 import pandas as pd import matplotlib.pyplot as plt from matplotlib.font_manager im

动手学深度学习17-kaggle竞赛实践小项目房价预测

kaggle竞赛 获取和读取数据集 数据预处理 找出所有数值型的特征,然后标准化 处理离散值特征 转化为DNArray后续训练 训练模型 k折交叉验证 预测样本,并提交结果 kaggle竞赛 本节将动手操作实践一个kaggle比赛,房价预测. 可以先将未经优化的数据的预处理,模型的设计和超参的选择,可以动手操作,观察实现的过程以及结果, 获取和读取数据集 比赛的数据分为训练数据集和测试数据集.两个数据集都包括每栋房子的特征,如阶段类型,建造年份,房顶类型,地下室状况等特征值.这些特征值有连续的数

掌握Spark机器学习库-07.6-线性回归实现房价预测

数据集 house.csv 数据概览 代码 package org.apache.spark.examples.examplesforml import org.apache.spark.ml.feature.VectorAssembler import org.apache.spark.ml.regression.LinearRegression import org.apache.spark.sql.SparkSession import org.apache.spark.{SparkCon

《用Python玩转数据》项目—线性回归分析入门之波士顿房价预测(二)

接上一部分,此篇将用tensorflow建立神经网络,对波士顿房价数据进行简单建模预测. 二.使用tensorflow拟合boston房价datasets 1.数据处理依然利用sklearn来分训练集和测试集. 2.使用一层隐藏层的简单网络,试下来用当前这组超参数收敛较快,准确率也可以. 3.激活函数使用relu来引入非线性因子. 4.原本想使用如下方式来动态更新lr,但是尝试下来效果不明显,就索性不要了. def learning_rate(epoch): if epoch < 200: re

房价预测

--数据来源kaggle比赛 本文仅就学习的机器学习算法进行简单的实践.  一.问题及数据导入 显然,目的肯定是根据现有的数据,来对房价进行预测了,本数据变量较多,这里不再一一叙述,官网下载的数据又对变量进行描述. 首先导入基本的库 1 import numpy as np 2 import pandas as pd 接下来导入数据 1 train=pd.read_csv('train.csv') 2 test=pd.read_csv('test.csv') 简单的查看下数据 1 train.s