GVKun编程网logo

basic bash learning 1

17

此处将为大家介绍关于basicbashlearning1的详细内容,此外,我们还将为您介绍关于6bayesianlearning、AtCoderABC129FTakahashi''sBasicsinE

此处将为大家介绍关于basic bash learning 1的详细内容,此外,我们还将为您介绍关于6 bayesian learning、AtCoder ABC 129F Takahashi''s Basics in Education and Learning、Challenge: Machine Learning Basics、Coursera, Deep Learning 1, Neural Networks and Deep Learning - week3, Neural Networks Basics的有用信息。

本文目录一览:

basic bash learning 1

basic bash learning 1

1) a function to check the free memory:

[[email protected] ~]$ function checkmem(){
> echo -n "The amount of free memeory is "
> free |head -2|tail -1|awk ‘{print $4}‘
> }
[[email protected] ~]$ checkmem
The amount of free memeory is 107940

  

2) using for loop to print the odd number from 1 to 99

for number in {1..99..2}
do
echo $number
done

 

3)  If and case

#!/bin/bash
read X
read Y
if (( $X > $Y )); then
printf "X is greater than Y"
elif (( $X == $Y )); then
printf "X is equal to Y"
else
printf "X is less than Y"
fi

#!/bin/bash
read p
case $p in 
Y|y) echo "YES" ;;
N|n) echo "NO" ;;
esac

4. delete the function name from terminal

[[email protected] ~]$ unset -f checkmem
[[email protected] ~]$ checkmem
bash: checkmem: command not found...
[[email protected] ~]$

6 bayesian learning

6 bayesian learning

a quantitive  approach 定量的方法

the native bayesina classifier

the sum of squared errors 误差平方和

cross entropy

inductive bias 

explict of probablities  for hypothese

target function that predict probabilities  预测概率函数

probabilistic    prediction  不确定预测

 

例子分析:

p(h) 为p(cancer) 先验概率  0.008

p(h|D) 为p(cancer|+) 后验概率 0.21

p(cancer|+)>p(cancer)   但是依然没有癌症

AtCoder ABC 129F Takahashi''s Basics in Education and Learning

AtCoder ABC 129F Takahashi''s Basics in Education and Learning

题目链接:https://atcoder.jp/contests/abc129/tasks/abc129_f

题目大意

  给定一个长度为 L ,首项为 A,公差为 B 的等差数列 S,将这 L 个数拼起来,记作 N,求 N % M。

分析

  设 bit (i) 为第 i 项所需要进行的十进制位移。
  则 $N = S_0 * 10^{bit (0)} + S_1 * 10^{bit (1)} + \dots + S_{L - 1} * 10^{bit (L - 1)}$。
  一项一项地算是肯定要超时的,不过注意到等差数列的每一项都小于 10 18 ,因此很多项的长度是相等的,也就是说有很多 bit (i) 也是等差数列。
  于是我们可以按照位数给等差数列分组,最多可分 18 组。
  举个例子,在区间 [L, R] 上,每一项长度都为 k。
  记这个区间上所表示的数为 A (k),A (k) 的每一项设为 $a_i, (L \leq i \leq R)$,则 $a_i = S_i * 10^{bit (i)}, A (k) = \sum_{i = L}^{R} a_i$。
  不难看出 $A (k) = 10^{bit (L)} * \sum_{i = L}^{R} (S_i * 10^{(R - i) * k})$,只要处理后一部分即可。
  设 $ret (j) = \sum_{i = L}^{j} (S_i * 10^{(j - i) * k}), (L \leq j \leq R)$。
  则有 $ret (j + 1) = ret (j) * 10^k + S_{j + 1}$,不妨设 ret (L - 1) = 0。
  于是我们可以构造如下系数矩阵 X:
X=[10k001100B1]
  和如下矩阵 RET (j):
RET(j)=[ret(j)Sj+11]

  于是有:

RET(j)=RET(j1)XRET(j)=RET(L1)XjL+1

  如此,通过矩阵快速幂,长度为 k 的一组值很快就被算出来了,然后每一组都分别算一下再加起来即可。

  PS:在实际实现过程中组与组之间是可以合并的,并不需要单独算出来每一组的余数,详细实现请看代码。

代码如下

  1 #include <bits/stdc++.h>
  2 using namespace std;
  3  
  4 #define INIT() ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
  5 #define Rep(i,n) for (int i = 0; i < (n); ++i)
  6 #define For(i,s,t) for (int i = (s); i <= (t); ++i)
  7 #define rFor(i,t,s) for (int i = (t); i >= (s); --i)
  8 #define ForLL(i, s, t) for (LL i = LL(s); i <= LL(t); ++i)
  9 #define rForLL(i, t, s) for (LL i = LL(t); i >= LL(s); --i)
 10 #define foreach(i,c) for (__typeof(c.begin()) i = c.begin(); i != c.end(); ++i)
 11 #define rforeach(i,c) for (__typeof(c.rbegin()) i = c.rbegin(); i != c.rend(); ++i)
 12  
 13 #define pr(x) cout << #x << " = " << x << "  "
 14 #define prln(x) cout << #x << " = " << x << endl
 15  
 16 #define LOWBIT(x) ((x)&(-x))
 17  
 18 #define ALL(x) x.begin(),x.end()
 19 #define INS(x) inserter(x,x.begin())
 20 #define UNIQUE(x) x.erase(unique(x.begin(), x.end()), x.end())
 21 #define REMOVE(x, c) x.erase(remove(x.begin(), x.end(), c), x.end()); // 删去 x 中所有 c 
 22 #define TOLOWER(x) transform(x.begin(), x.end(), x.begin(),::tolower);
 23 #define TOUPPER(x) transform(x.begin(), x.end(), x.begin(),::toupper);
 24  
 25 #define ms0(a) memset(a,0,sizeof(a))
 26 #define msI(a) memset(a,inf,sizeof(a))
 27 #define msM(a) memset(a,-1,sizeof(a))
 28 
 29 #define MP make_pair
 30 #define PB push_back
 31 #define ft first
 32 #define sd second
 33  
 34 template<typename T1, typename T2>
 35 istream &operator>>(istream &in, pair<T1, T2> &p) {
 36     in >> p.first >> p.second;
 37     return in;
 38 }
 39  
 40 template<typename T>
 41 istream &operator>>(istream &in, vector<T> &v) {
 42     for (auto &x: v)
 43         in >> x;
 44     return in;
 45 }
 46  
 47 template<typename T1, typename T2>
 48 ostream &operator<<(ostream &out, const std::pair<T1, T2> &p) {
 49     out << "[" << p.first << ", " << p.second << "]" << "\n";
 50     return out;
 51 }
 52 
 53 inline int gc(){
 54     static const int BUF = 1e7;
 55     static char buf[BUF], *bg = buf + BUF, *ed = bg;
 56     
 57     if(bg == ed) fread(bg = buf, 1, BUF, stdin);
 58     return *bg++;
 59 } 
 60 
 61 inline int ri(){
 62     int x = 0, f = 1, c = gc();
 63     for(; c<48||c>57; f = c==''-''?-1:f, c=gc());
 64     for(; c>47&&c<58; x = x*10 + c - 48, c=gc());
 65     return x*f;
 66 }
 67 
 68 template<class T>
 69 inline string toString(T x) {
 70     ostringstream sout;
 71     sout << x;
 72     return sout.str();
 73 }
 74 
 75 inline int toInt(string s) {
 76     int v;
 77     istringstream sin(s);
 78     sin >> v;
 79     return v;
 80 }
 81 
 82 //min <= aim <= max
 83 template<typename T>
 84 inline bool BETWEEN(const T aim, const T min, const T max) {
 85     return min <= aim && aim <= max;
 86 }
 87  
 88 typedef long long LL;
 89 typedef unsigned long long uLL;
 90 typedef pair< double, double > PDD;
 91 typedef pair< int, int > PII;
 92 typedef pair< int, PII > PIPII;
 93 typedef pair< string, int > PSI;
 94 typedef pair< int, PSI > PIPSI;
 95 typedef set< int > SI;
 96 typedef set< PII > SPII;
 97 typedef vector< int > VI;
 98 typedef vector< double > VD;
 99 typedef vector< VI > VVI;
100 typedef vector< SI > VSI;
101 typedef vector< PII > VPII;
102 typedef map< int, int > MII;
103 typedef map< int, string > MIS;
104 typedef map< int, PII > MIPII;
105 typedef map< PII, int > MPIII;
106 typedef map< string, int > MSI;
107 typedef map< string, string > MSS;
108 typedef map< PII, string > MPIIS;
109 typedef map< PII, PII > MPIIPII;
110 typedef multimap< int, int > MMII;
111 typedef multimap< string, int > MMSI;
112 //typedef unordered_map< int, int > uMII;
113 typedef pair< LL, LL > PLL;
114 typedef vector< LL > VL;
115 typedef vector< VL > VVL;
116 typedef priority_queue< int > PQIMax;
117 typedef priority_queue< int, VI, greater< int > > PQIMin;
118 const double EPS = 1e-8;
119 const LL inf = 0x7fffffff;
120 const LL infLL = 0x7fffffffffffffffLL;
121 LL mod = 1e9 + 7;
122 const int maxN = 1e5 + 7;
123 const LL ONE = 1;
124 const LL evenBits = 0xaaaaaaaaaaaaaaaa;
125 const LL oddBits = 0x5555555555555555;
126 
127 struct Matrix{
128     int row, col;
129     LL MOD;
130     VVL mat;
131     
132     Matrix(int r, int c, LL p = mod) : row(r), col(c), MOD(p) { 
133         mat.assign(r, VL(c, 0));
134     }
135     Matrix(const Matrix &x, LL p = mod) : MOD(p){
136         mat = x.mat;
137         row = x.row;
138         col = x.col;
139     }
140     Matrix(const VVL &A, LL p = mod) : MOD(p){
141         mat = A;
142         row = A.size();
143         col = A[0].size();
144     }
145     
146     // x * 单位阵 
147     inline void E(int x = 1) {
148         assert(row == col);
149         Rep(i, row) mat[i][i] = x;
150     }
151     
152     inline VL& operator[] (int x) {
153         assert(x >= 0 && x < row);
154         return mat[x];
155     }
156     
157     inline Matrix operator= (const VVL &x) {
158         row = x.size();
159         col = x[0].size();
160         mat = x;
161         return *this;
162     }
163     
164     inline Matrix operator+ (const Matrix &x) {
165         assert(row == x.row && col == x.col);
166         Matrix ret(row, col);
167         Rep(i, row) {
168             Rep(j, col) {
169                 ret.mat[i][j] = mat[i][j] + x.mat[i][j];
170                 ret.mat[i][j] %= MOD;
171             }
172         }
173         return ret;
174     }
175     
176     inline Matrix operator* (const Matrix &x) {
177         assert(col == x.row);
178         Matrix ret(row, x.col);
179         Rep(k, x.col) {
180             Rep(i, row) {
181                 if(mat[i][k] == 0) continue;
182                 Rep(j, x.col) {
183                     ret.mat[i][j] += mat[i][k] * x.mat[k][j];
184                     ret.mat[i][j] %= MOD;
185                 }
186             }
187         }
188         return ret;
189     }
190     
191     inline Matrix operator*= (const Matrix &x) { return *this = *this * x; }
192     inline Matrix operator+= (const Matrix &x) { return *this = *this + x; }
193     
194     inline void print() {
195         Rep(i, row) {
196             Rep(j, col) {
197                 cout << mat[i][j] << " ";
198             }
199             cout << endl;
200         }
201     }
202 };
203 
204 // 矩阵快速幂,计算x^y 
205 inline Matrix mat_pow_mod(Matrix x, LL y) {
206     Matrix ret(x.row, x.col);
207     ret.E();
208     while(y){
209         if(y & 1) ret *= x;
210         x *= x;
211         y >>= 1;
212     }
213     return ret;
214 }
215 
216 LL L, A, B, M, ans; 
217 
218 // 从数列第 st 项开始,查找区间 [L, R],使得区间内的所有数都小于 bit 大于等于 bit/10。 
219 // 有返回 true 没有返回 false 
220 LL st = 0, bit = 10, l, r;
221 bool getLR() {
222     if(st >= L || A + st * B >= bit) return false;
223     l = st;
224     r = L - 1;
225     
226     while(l < r) {
227         LL mid = (l + r) >> 1;
228         if(A + mid * B < bit) l = mid + 1;
229         else r = mid;
230     }
231     
232     if(A + r * B >= bit) --r;
233     l = st;
234     st = r + 1; // 下一个起始位置 
235     return true;
236 }
237 
238 int main(){
239     //freopen("MyOutput.txt","w",stdout);
240     //freopen("input.txt","r",stdin);
241     INIT();
242     cin >> L >> A >> B >> mod;
243     
244     For(i, 1, 18) { // 枚举位数 
245         if(getLR()) {
246             Matrix mat(3, 3); 
247             mat[0][0] = bit % mod;
248             mat[0][1] = mat[0][2] = mat[1][2] = mat[2][1] = 0;
249             mat[1][0] = mat[1][1] = mat[2][2] = 1;
250             mat[2][1] = B % mod;
251             
252             mat = mat_pow_mod(mat, r - l + 1);
253             
254             Matrix ret(1, 3); 
255             ret[0][0] = ans;
256             ret[0][1] = (A + l * B) % mod;
257             ret[0][2] = 1;
258             
259             ret *= mat;
260             
261             ans = ret[0][0];
262         }
263         bit *= 10;
264     }
265     cout << ans << endl;
266     return 0;
267 }
View Code

 

Challenge: Machine Learning Basics

Challenge: Machine Learning Basics

1: How Challenges Work

At Dataquest, we''re huge believers in learning through doing and we hope this shows in the learning experience of the missions. While missions focus on introducing concepts, challenges allow you to perform deliberate practice by completing structured problems. You can read more about deliberate practice here and here. Challenges will feel similar to missions but with little instructional material and a larger focus on exercises.

For these challenges, we strongly encourage programming on your own computer so you practice using these tools outside the Dataquest environment. You can also use the Dataquest interface to write and quickly run code to see if you’re on the right track. By default, clicking the check code button runs your code and performs answer checking. You can toggle this behavior so that your code is run and the results are returned, without performing any answer checking. Executing your code without performing answer checking is much quicker and allows you to iterate on your work. When you’re done and ready to check your answer, toggle the behavior so that answer checking is enabled.

If you have questions or run into issues, head over to the Dataquest forums or our Slack community.

2: Data Cleaning

In this challenge, you''ll build on the exploration from the last mission, where we tried to answer the question:

  • How do the properties of a car impact it''s fuel efficiency?

We focused the last mission on capturing how the weight of a car affects it''s fuel efficiency by fitting a linear regression model. In this challenge, you''ll explore how the horsepower of a car affects it''s fuel efficiency and practice using scikit-learn to fit the linear regression model.

Unlike the weight column, the horsepower column has some missing values. These values are represented using the ? character. Let''s filter out these rows so we can fit the model. We''ve already read auto-mpg.data into a Dataframe named cars.

Instructions

  • Remove all rows where the value for horsepower is ? and convert the horsepower column to a float.
  • Assign the new Dataframe tofiltered_cars.

import pandas as pd
columns = ["mpg", "cylinders", "displacement", "horsepower", "weight", "acceleration", "model year", "origin", "car name"]
cars = pd.read_table("auto-mpg.data", delim_whitespace=True, names=columns)
filtered_cars=cars[cars["horsepower"]!="?"]
filtered_cars["horsepower"]=filtered_cars["horsepower"].astype("float")

3: Data Exploration

Now that the horsepower values are cleaned, generate a scatter plot that visualizes the relation between the horsepower values and thempg values. Let''s compare this to the scatter plot that visualizes weight against mpg.

Instructions

  • Use the Dataframe plot to generate 2 scatter plots, in vertical order:
    • On the top plot, generate a scatter plot with thehorsepower column on the x-axis and the mpgcolumn on the y-axis.
    • On the bottom plot, generate a scatter plot with the weight column on the x-axis and the mpg column on the y-xis.

import matplotlib.pyplot as plt
%matplotlib inline
filtered_cars.plot("weight","mpg",kind="scatter")
filtered_cars.plot("acceleration","mpg",kind="scatter")
plt.show()

 

 

4: Fitting A Model

While it''s hard to directly compare the plots since the scales for the x axes are very different, there does seem to be some relation between a car''s horsepower and it''s fuel efficiency. Let''s fit a linear regression model using the horsepower values to get a quantitive understanding of the relationship.

Instructions

  • Create a new instance of the LinearRegression model and assign it to lr.
  • Use the fit method to fit a linear regression model using thehorsepower column as the input.
  • Use the model to make predictions on the same data the model was trained on (thehorsepower column fromfiltered_cars) and assign the resulting predictions topredictions.
  • Display the first 5 values inpredictions and the first 5 values in the mpg column fromfiltered_cars.

import sklearn
from sklearn.linear_model import LinearRegression
lr = LinearRegression()
lr.fit(filtered_cars[["horsepower"]], filtered_cars["mpg"])
predictions = lr.predict(filtered_cars[["horsepower"]])
print(predictions[0:5])
print(filtered_cars["mpg"][0:5].values)

Output

[ 19.41604569 13.89148002 16.25915102 16.25915102 17.83759835]

[ 18. 15. 18. 16. 17.]

5: Plotting The Predictions

In the last mission, we plotted the predicted values and the actual values on the same plot to visually understand the model''s effectiveness. Let''s repeat that here for the predictions as well.

Instructions

  • Generate 2 scatter plots on the same chart (Matplotlib axes instance):
    • One containing thehorsepower values on the x-axis against the predicted fuel efficiency values on the y-axis. Use blue for the color of the dots.
    • One containing thehorsepower values on the x-axis against the actual fuel efficiency values on the y-axis. Use red for the color of the dots.

import matplotlib.pyplot as plt
%matplotlib inline

plt.scatter(filtered_cars["horsepower"],predictions,c="blue")
plt.scatter(filtered_cars["horsepower"],filtered_cars["mpg"],c="red")
plt.show()

6: Error Metrics

To evaluate how well the model fits the data, you can compute the MSE and RMSE values for the model. Then, you can compare the MSE and RMSE values with those from the model you fit in the last mission. Recall that the model you fit in the previous mission captured the relationship between the weight of a car (weight column) and it''s fuel efficiency (mpg column).

Instructions

  • Calculate the MSE of the predicted values and assign tomse.
  • Calculate the RMSE of the predicted values and assign tormse.

 

from sklearn.metrics import mean_squared_error

mse = mean_squared_error(filtered_cars["mpg"], predictions)
print(mse)
rmse = mse ** 0.5
print(rmse)

7: Next Steps

The MSE for the model from the last mission was 18.78 while the RMSE was 4.33. Here''s a table comparing the approximate measures for both models:

 

  Weight Horsepower
MSE 18.78 23.94
RMSE 4.33 4.89

 

If we could only use one input to our model, we should definitely use the weight values to predict the fuel efficiency values because of the lower MSE and RMSE values. There''s a lot more before we can build a reliable, working model to predict fuel efficiency however. In later missions, we''ll learn how to use multiple features to build a more reliable predictive model.

 

Coursera, Deep Learning 1, Neural Networks and Deep Learning - week3, Neural Networks Basics

Coursera, Deep Learning 1, Neural Networks and Deep Learning - week3, Neural Networks Basics

 NN representation

 

这一课主要是讲3层神经网络

  

 

  

 

下面是常见的 activation 函数.sigmoid, tanh, ReLU, leaky ReLU.

  

  

Sigmoid 只用在输出0/1 时候的output layer, 其他情况基本不用,因为tanh 总是比sigmoid 好.

两种 ReLU 使用起来总是要比sigmoid 和 tanh 快。ReLU 是最常用的 activation.

  

 

为什么Activation function 要是non-linear的?因为如下图所示如果activation 是linear的,那么最终output 只是 input 的线性函数.

   

 

 

Gradient of activation function

  

 

  

  

  

 

 

Gredient of 2 layer NN.

  

 

  

Random initialization

  

 

今天的关于basic bash learning 1的分享已经结束,谢谢您的关注,如果想了解更多关于6 bayesian learning、AtCoder ABC 129F Takahashi''s Basics in Education and Learning、Challenge: Machine Learning Basics、Coursera, Deep Learning 1, Neural Networks and Deep Learning - week3, Neural Networks Basics的相关知识,请在本站进行查询。

本文标签: