2016年10月28日金曜日

简单感知机实现

# coding: UTF-8
# 2次元のパーセプトロンの学習規則の実装例
import numpy as np
import matplotlib.pyplot as plt
import sys

def train(wvec, xvec, label):
    low = 0.5#学習係数
    if (np.dot(wvec,xvec) * label < 0):
        wvec_new = wvec + label*low*xvec
        return wvec_new
    else:
        return wvec

if __name__ == '__main__':

    train_num = 100#学習データ数

    #class1の学習データ
    x1_1=np.random.rand(train_num/2) * 5 + 1 #x成分
    x1_2=np.random.rand(int(train_num/2)) * 5 + 1 #y成分
    label_x1 = np.ones(train_num/2) #ラベル(すべて1)

    #class2の学習データ
    x2_1=(np.random.rand(train_num/2) * 5 + 1) * -1 #x成分
    x2_2=(np.random.rand(train_num/2) * 5 + 1) * -1 #y成分
    label_x2 = np.ones(train_num/2) * -1 #ラベル(すべて-1)

    x0=np.ones(train_num/2) # x0は常に1
    x1=np.c_[x0, x1_1, x1_2]
    x2=np.c_[x0, x2_1, x2_2]

    xvecs=np.r_[x1, x2]
    labels = np.r_[label_x1, label_x2]

    wvec = np.array([2,-1,3])#初期の重みベクトル 適当に決める

    loop = 100
    for j in range(loop):
        for xvec, label in zip(xvecs, labels):
            wvec = train(wvec, xvec, label)

    print(wvec)

    plt.scatter(x1[:,1], x1[:,2], c='red', marker="o")
    plt.scatter(x2[:,1], x2[:,2], c='yellow', marker="o")
    #分離境界線
    x_fig = np.array(range(-8,8))
    y_fig = -(wvec[1]/wvec[2])*x_fig - (wvec[0]/wvec[2])

    plt.plot(x_fig,y_fig)
    plt.show()



http://iamtrask.github.io/2015/07/12/basic-python-network/

2016年10月20日木曜日

postgresqlデータベース numericデータタイプ

NUMERIC(precision, scale)

precision精度、
scale位取り

上記の説明は理解しにくいです。

簡単にいうと、
precisionは全体桁数(小数点含む)である
scaleは小数桁数である

例:
numeric(13, 4)

⇒12345678901234 OK
⇒1234567890.123 OK
⇒123456789.1234 OK
⇒1234567890.1234 NG

2016年10月19日水曜日

translate api関連

http://ec.europa.eu/dgs/translation/translationresources/machine_translation/index_en.htm

https://www.quora.com/Which-is-a-good-reliable-free-language-translation-API-available

2016年10月18日火曜日

ml学习路径

概述(历史,现状)
PYTHON基础
感知机
  激励函数
神经网络初步
    梯度下降
    反向传递
神经网络优化
    成本函数
    正规化
    初始化
    过拟合
    海森矩阵
深度学习
    卷积神经网络
    RNN

リンク:
http://www.kdnuggets.com/2016/09/poll-algorithms-used-data-scientists.html
https://appliedgo.net/perceptron/
http://tjo.hatenablog.com/entry/2013/05/01/190247
https://www.youtube.com/playlist?list=PLD63A284B7615313A
http://www.itcast.cn/subject/pythonzly/index.shtml?from=161101a9

storm vs spark streaming
http://www.slideshare.net/ptgoetz/apache-storm-vs-spark-streaming

http://www.36dsj.com/archives/10223
感知机
http://web.donga.ac.kr/yjko/usefulthings/Perceptron_Ko.pdf

http://lxw1234.com/archives/2016/05/649.htm

slideshare.net/tw_dscon

2016年10月13日木曜日

springboot+domaページング

SQL:
ファイル名:
{プロジェクトパス}\src\main\resources\META-INF\com\example\MenuDao\selectAll.sql

ファイル内容
SELECT
menu_id
,menu_namer
FROM menus
ORDER BY menu_id



Entity:
ファイル名:
{プロジェクトパス}\src\main\ava\com\example\Menus.java
@Entity
@Table(name = "menus")
public class Menus {


@Id
@Column(name = "menu_id")
private Integer menuId;

@Column(name = "menu_name")
private String menuName;

//getter,setter略

}

Dao:
ファイル名:
{プロジェクトパス}\src\main\java\com\example\MenuDao.java
@Dao
@ConfigAutowireable
public interface MenuDao {

@Select
List<TElecRyokinLowMenuM> selectAll(SelectOptions options);

}

Controller:
ファイル名:
{プロジェクトパス}\src\main\java\com\example\MenuController.java

@RestController
public class MenuController {

final MenuDao menuDao;

@Autowired
public MenuController(MenuDao menuDao){
this.menuDao = menuDao;
}

@RequestMapping(value="/menu",method=RequestMethod.GET)
List<Menus> list(@PageableDefault Pageable pageable){
List<Menus> menus = menuDao.selectAll(Pageables.toSelectOptions(pageable));
return menus;
}

}

使用方法:
http://localhost:8080/menu?page=5&size=30

ログをみると、下記のようなSQLを出力する:
select 
menu_id
,menu_name
from menus 

order by menu_id limit 30 offset 150

参照リンク:
http://ankushs92.github.io/tutorial/2016/05/03/pagination-with-spring-boot.html

转贴:C中的const

const是一个C语言的关键字,它限定一个变量不允许被改变。使用const在一定程度上可以提高程序的健壮性,另外,在观看别人代码的时候,清晰理解const所起的作用,对理解对方的程序也有一些帮助。 虽然这听起来很简单,但实际上,const的使用也是c语言中一个比较微妙的地方,微妙在何处呢?请看下面几个问题。
  问题:const变量 & 常量
  为什么我象下面的例子一样用一个const变量来初始化数组,ANSI C的编译器会报告一个错误呢?
  const int n = 5;
  int a[n];
  答案与分析:
  1)、这个问题讨论的是“常量”与“只读变量”的区别。常量肯定是只读的,例如5, “abc”,等,肯定是只读的,因为程序中根本没有地方存放它的值,当然也就不能够去修改它。而“只读变量”则是在内存中开辟一个地方来存放它的值,只不过这个值由编译器限定不允许被修改。C语言关键字const就是用来限定一个变量不允许被改变的修饰符(Qualifier)。上述代码中变量n被修饰为只读变量,可惜再怎么修饰也不是常量。而ANSI C规定数组定义时维度必须是“常量”,“只读变量”也是不可以的。
  2)、注意:在ANSI C中,这种写法是错误的,因为数组的大小应该是个常量,而const int n,n只是一个变量(常量 != 不可变的变量,但在标准C++中,这样定义的是一个常量,这种写法是对的),实际上,根据编译过程及内存分配来看,这种用法本来就应该是合理的,只是ANSI C对数组的规定限制了它。
  3)、那么,在ANSI C 语言中用什么来定义常量呢?答案是enum类型和#define宏,这两个都可以用来定义常量。
  问题:const变量 & const 限定的内容
  下面的代码编译器会报一个错误,请问,哪一个语句是错误的呢?
  typedef char * pStr;
  char string[4] = "abc";
  const char *p1 = string;
  const pStr p2 = string;
  p1++;
  p2++;
  答案与分析:
  问题出在p2++上。
  1)、const使用的基本形式: const char m;
  限定m不可变。
  2)、替换1式中的m, const char *pm;
  限定*pm不可变,当然pm是可变的,因此问题中p1++是对的。
  3)、替换1式char, const newType m;
  限定m不可变,问题中的charptr就是一种新类型,因此问题中p2不可变,p2++是错误的。
  问题:const变量 & 字符串常量
  请问下面的代码有什么问题?
  char *p = "i'm hungry!";
  p[0]= 'I';
  答案与分析:
  上面的代码可能会造成内存的非法写操作。分析如下, “i'm hungry”实质上是字符串常量,而常量往往被编译器放在只读的内存区,不可写。p初始指向这个只读的内存区,而p[0] = 'I'则企图去写这个地方,编译器当然不会答应。
  问题:const变量 & 字符串常量2
  请问char a[3] = "abc" 合法吗?使用它有什么隐患?
  答案与分析:
  在标准C中这是合法的,但是它的生存环境非常狭小;它定义一个大小为3的数组,初始化为“abc”,,注意,它没有通常的字符串终止符'\0',因此这个数组只是看起来像C语言中的字符串,实质上却不是,因此所有对字符串进行处理的函数,比如strcpy、printf等,都不能够被使用在这个假字符串上。
  问题:const & 指针
  类型声明中const用来修饰一个常量,有如下两种写法,那么,请问,下面分别用const限定不可变的内容是什么?
  1)、const在前面
  const int nValue; //nValue是const
  const char *pContent; //*pContent是const, pContent可变
  const (char *) pContent;//pContent是const,*pContent可变
  char* const pContent; //pContent是const,*pContent可变
  const char* const pContent; //pContent和*pContent都是const
  2)、const在后面,与上面的声明对等
  int const nValue; // nValue是const
  char const * pContent;// *pContent是const, pContent可变
  (char *) const pContent;//pContent是const,*pContent可变
  char* const pContent;// pContent是const,*pContent可变
  char const* const pContent;// pContent和*pContent都是const
  答案与分析:
  const和指针一起使用是C语言中一个很常见的困惑之处,在实际开发中,特别是在看别人代码的时候,常常会因为这样而不好判断作者的意图,下面讲一下我的判断原则:
  沿着*号划一条线,const和谁在一边,那么谁就是const,即const限定的元素就是它。你可以根据这个规则来看上面声明的实际意义,相信定会一目了然。
  另外,需要注意:对于const (char *) ; 因为char *是一个整体,相当于一个类型(如 char),因此,这是限定指针是const。

2016年10月7日金曜日

batch起動eclipse

@echo off

rem eclipse起動!
cd C:\ma\eclipse

echo Eclipse起動!
start "" C:\ma\eclipse\eclipse.exe

2016年10月6日木曜日