SVM
SVM
kernel
介绍
其实核函数和映射关系并不大,kernel可以看作是一个运算技巧。
一般认为,原本在低维线性不可分的数据集在足够高的维度存在线性可分的超平面。
其实核函数和映射关系并不大,kernel可以看作是一个运算技巧。
一般认为,原本在低维线性不可分的数据集在足够高的维度存在线性可分的超平面。
https://leetcode-cn.com/problems/permutation-in-string/
滑动窗口加字典
class Solution(object):
def checkInclusion(self, s1, s2):
= collections.Counter(s1)
counter1 = len(s2)
N = 0
left = len(s1) - 1
right = collections.Counter(s2[0:right])
counter2 while right < N:
+= 1
counter2[s2[right]] if counter1 == counter2:
return True
-= 1
counter2[s2[left]] if counter2[s2[left]] == 0:
del counter2[s2[left]]
+= 1
left += 1
right return False
类似于pandas的apply,就是在某一维上进行定义的函数操作
apply_along_axis(func1d, axis, arr, *args, **kwargs)
官网的例子
def my_func(a):
return (a[0] + a[-1]) * 0.5
= np.array([[1,2,3], [4,5,6], [7,8,9]])
b
0, b)
np.apply_along_axis(my_func, # 结果
4., 5., 6.])
array([
# 结果
2., 5., 8.]) array([
https://leetcode-cn.com/problems/4xy4Wx/
题目很简单,思想就是双指针,感觉是个双指针的典型例子就写了下来
先对数组进行从小到大排序,然后双指针从两边移动,如果一直大于target就一直左移right 然后right - left就是所有成立的数目,再移动left 进行筛选
翻了翻以前用python刷leetcode的记录,最后刷的一道题是这样的
https://leetcode-cn.com/problems/single-number/
叫只出现一次的数字,当时看题感觉非常简单啊!直接搞就行了
当时一开始我的做法是这样的
import numpy as np
from sklearn.model_selection import train_test_split,cross_val_score
from sklearn import datasets
from sklearn.neighbors import KNeighborsClassifier
= datasets.load_iris()
data = data.data
X = data.target Y
= []
k_scores for k in range(1,31):
= KNeighborsClassifier(n_neighbors=k)
model #scores = cross_val_score(model,X,Y,cv=10,scoring="accuracy") # for classification
= -cross_val_score(model,X,Y,cv=10,scoring="neg_mean_squared_error") # for regression
loss
k_scores.append(loss.mean())range(1,31),k_scores)
plt.plot( plt.show()
B树就是B-树,以前还以为这是两种树,现在才知道这俩就是一个东西。
其中最小度数和B树的阶不一样:
https://leetcode-cn.com/problems/he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof/
滑动窗口即可,滑动窗口就是选取数组的一部分来进行操作,left 和 right只能向右移动
class Solution:
def findContinuousSequence(self, target: int) -> List[List[int]]:
= []
res = 1,2
left,right while left <= target // 2: # 优化 减少时间复杂度
if sum(range(left,right+1)) < target: # 小于target 右指针移动
+= 1
right elif sum(range(left,right+1)) > target: # 大于target 左指针移动
+= 1
left else:
list(range(left,right+1))) # 相等的话 两个指针都移动
res.append(+= 1
right += 1
left return res