kaggle gradient_descent

1.描述

自写梯度下降

2.代码

import numpy as np
import matplotlib.pyplot as plt # train_X = np.array([[1,2,3,4,5,6,7,8,9,10],[1,2,3,4,5,6,7,8,9,10]]).T
# train_y = np.array([2,4,6,8,10,12,14,16,18,20]).T
# test_X = np.array([[2,4,12,11],[3,6,3,9]]).T # 5 10 15 20 train_X = np.random.randn(1000,10)
train_y = np.random.randn(1000,1)
test_X = np.random.randn(1000,10) step_len = 0.1
max_iterations = 100000
epsilon = 1e-7 def ComputeCost(X,y,theta):
tmp = X.dot(theta)-y.reshape(y.shape[0],1)
return 1/(2*len(y))*sum((tmp*tmp)) def GradientDescent(X,y,step_len,max_iterations):
X = np.array(X)
y = np.array(y)
X = np.column_stack( (np.ones((len(y),1)),X))
theta = np.zeros((X.shape[1],1))
m = len(y)
J_his = []
for i in range(0,max_iterations):
tmp = X.dot(theta)-y.reshape(y.shape[0],1)
theta = theta - step_len / m * X.T.dot(tmp)
J_his.append(ComputeCost(X,y,theta))
#print(J_his[-1])
if(len(J_his)>=2 and J_his[-2] - J_his[-1] >= 0 and J_his[-2] - J_his[-1] <= epsilon):
print('已收敛')
break
if(len(J_his)>=2 and J_his[-1] - J_his[-2] >= 0):
print('步长过大')
break
return theta,J_his def Predict(X,theta):
one = np.ones((X.shape[0],1))
X = np.column_stack(( one,X ))
return X.dot(theta) def Normalizetion(x):
sum_tmp = np.sum(x,axis=0)
max_tmp = np.max(x,axis=0)
min_tmp = np.min(x,axis=0)
ave_tmp = np.average(x,axis=0)
return (x - ave_tmp)/(max_tmp-min_tmp)
############################################################################# train_X = Normalizetion(train_X)
theta,J_his = GradientDescent(train_X,train_y,step_len,max_iterations)
# print('theta =',theta,'\n') # print(Predict(test_X,theta)) train_time = range(0,len(J_his))
plt.plot(train_time, J_his)
plt.xlabel('train_time')
plt.ylabel('cost_fun_J')
plt.show()

kaggle gradient_descent的更多相关文章

  1. kaggle入门2——改进特征

    1:改进我们的特征 在上一个任务中,我们完成了我们在Kaggle上一个机器学习比赛的第一个比赛提交泰坦尼克号:灾难中的机器学习. 可是我们提交的分数并不是非常高.有三种主要的方法可以让我们能够提高他: ...

  2. Kaggle入门教程

    此为中文翻译版 1:竞赛 我们将学习如何为Kaggle竞赛生成一个提交答案(submisson).Kaggle是一个你通过完成算法和全世界机器学习从业者进行竞赛的网站.如果你的算法精度是给出数据集中最 ...

  3. 如何使用Python在Kaggle竞赛中成为Top15

    如何使用Python在Kaggle竞赛中成为Top15 Kaggle比赛是一个学习数据科学和投资时间的非常的方式,我自己通过Kaggle学习到了很多数据科学的概念和思想,在我学习编程之后的几个月就开始 ...

  4. kaggle实战记录 =>Digit Recognizer

    date:2016-09-13 今天开始注册了kaggle,从digit recognizer开始学习, 由于是第一个案例对于整个流程目前我还不够了解,首先了解大神是怎么运行怎么构思,然后模仿.这样的 ...

  5. kaggle数据挖掘竞赛初步--Titanic<原始数据分析&缺失值处理>

    Titanic是kaggle上的一道just for fun的题,没有奖金,但是数据整洁,拿来练手最好不过啦. 这道题给的数据是泰坦尼克号上的乘客的信息,预测乘客是否幸存.这是个二元分类的机器学习问题 ...

  6. kaggle& titanic代码

    这两天报名参加了阿里天池的’公交线路客流预测‘赛,就顺便先把以前看的kaggle的titanic的训练赛代码在熟悉下数据的一些处理.题目根据titanic乘客的信息来预测乘客的生还情况.给了titan ...

  7. kaggle 竞赛之套路

    图片数据:卷积还是王道,有几个比较通用性的框架被人拿来改来改去 非图片特征数据:用分类: boost系列算法:牛逼的框架实现 xgboost AdaBoost算法针对不同的训练集训练同一个基本分类器( ...

  8. 初窥Kaggle竞赛

    初窥Kaggle竞赛 原文地址: https://www.dataquest.io/mission/74/getting-started-with-kaggle 1: Kaggle竞赛 我们接下来将要 ...

  9. 准备熟悉Kaggle -菜鸟进阶

    原文链接http://www.bubuko.com/infodetail-525389.html 1.Kaggle简介 Kaggle是一个数据分析的竞赛平台,网址:https://www.kaggle ...

随机推荐

  1. Memcache mutex设计模式

    Memcache mutex设计模式 转自:https://timyang.net/programming/memcache-mutex/ 场景 Mutex主要用于有大量并发访问并存在cache过期的 ...

  2. leetcode_sql_2,183

    183. Customers Who Never Order Suppose that a website contains two tables, the Customers table and t ...

  3. 性能测试工具BenchmarkDotnet

    .NET Core中的性能测试工具BenchmarkDotnet https://www.cnblogs.com/lwqlun/p/9671611.html 背景介绍 之前一篇博客中,我们讲解.NET ...

  4. PCIe相关的操作命令

    1.lspci        --显示列举系统目前的pcie设备    43:00.0 Class 0004: Device 104c:b800 (rev 01)    //netra设备 设备编号 ...

  5. HTML 和 CSS

    HTML html是英文hyper text mark-up language(超文本标记语言)的缩写,它是一种制作万维网页面标准语言.   内容摘要   Doctype 告诉浏览器使用什么样的htm ...

  6. java流类练习前篇

    总结: package com.aini; import java.io.*; public class gf { public static String main(String[] args) t ...

  7. L2-014. 列车调度(set的使用,最长递增子序列)

    L2-014. 列车调度 时间限制 300 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 火车站的列车调度铁轨的结构如下图所示. Figure ...

  8. vuex的实用知识点

    本文系统介绍vuex的全部内容 为什么用vuex 组件通信知道吧,相信很多同学,刚学的时候很难懂,实时上在实际应用中,大型项目如果使用最原始的组件通信会非常的麻烦,主要体现在多层嵌套的组件之间的通信, ...

  9. Ubuntu16.04 Hadoop2.6.0伪分布式安装与启动中遇到的问题

    1.安装JDK1.8,下载安装包解压至 /usr/lib/jdk vim /etc/profile #配置路径 export JAVA_HOME= /usr/lib/jdk export JRE_HO ...

  10. Linux 正文处理命令及tar vi 编辑器

    root 用户不受权限设置 如果文件有x 就可以执行 对目录的权限 r:可以查看目录下面的文件名 w:可以在该目录下新建,删除,修改文件名 x:可以cd进入目录 对于文件: 可执行的文件来说需要有可读 ...